如何使用 Python 生成器进行并行计算

2023-03-31 00:00:00 并行 如何使用 生成器

要使用Python生成器进行并行计算,可以使用Python内置的multiprocessing模块,其中有一个Pool类,它可以创建进程池来并行执行函数。下面是一个简单的示例,该示例使用4个进程计算pidancode.com到皮蛋编程的哈希值:

import hashlib
from multiprocessing import Pool

def calculate_hash(string):
    """计算字符串的哈希值"""
    return hashlib.md5(string.encode()).hexdigest()

if __name__ == '__main__':
    # 要计算哈希的字符串列表
    strings = ['pidancode.com', '皮蛋编程']

    # 创建进程池,指定进程数为4
    pool = Pool(processes=4)

    # 计算字符串的哈希值,并将结果存储在列表中
    hash_values = pool.map(calculate_hash, strings)

    # 关闭进程池
    pool.close()
    pool.join()

    # 打印结果
    print(hash_values)

在这个例子中,calculate_hash函数计算输入字符串的哈希值,map方法将calculate_hash函数应用到strings列表中的每个字符串,并将结果存储在hash_values列表中。这个过程使用了4个进程来并行计算哈希值。最后,程序输出计算出的哈希值。

注意,在使用multiprocessing模块时,要确保在主模块中的if name == 'main'条件下调用进程池,这样可以避免在子进程中无限递归地调用该模块。

以上就是使用Python生成器进行并行计算的一个简单示例,您可以根据需要进行调整和扩展。

相关文章