我有一个计算数百万行数据的函数,以及使用多处理可以更快地完成的工作
在此之前,我仅使用Pool
与map
类似:
from multiprocessing.dummy import Pool
pool = Pool(20)
pool.map(my_function, data_list)
但是我的函数有两个参数:公司列表和字典,其中csv
个文件作为值
所以我的问题是,如何在我的函数中使用多处理?
答案 0 :(得分:2)
您可以使用列表来包含所有参数,然后该函数只接受一个参数并解析函数中的参数。
答案 1 :(得分:1)
查看Pool.map()
:
def map(self, func, iterable, chunksize=None):
从语义的角度来看,方法Pool.map()
只是将函数应用于iterable,即函数必须只有一个变量参数,它从iterable中获取一个值。因此,该函数必须只有一个参数,或者具有带有固定值的其他参数的变量参数。
所以有一些解决方案:
Pool.map()
。使用multiprocessing.Process()
生成每个进程,然后将它们添加到池中