Python中multiprocessing.Pool运行带多个参数的函数


在python中经常会到用多线程处理某个函数来缩短运行时间,但通常multiprocessing.Pool的map函数只接受一个可迭代参数。

from multiprocessing import Pool

def work(x):
    return x+1
pool = Pool(processes=4) # 4个线程
x = [1,2,3,4,5,6]
results = pool.map(work, x)
print results

运行上面的程序就会多线程处理并打印出输入x的计算结果。

但是这个函数仅允许函数的输入变量为1,如果函数需要多个参数输入,那个就无法用上面的程序。比如:

def work(x, y):
    return x + y

当附加参数y为固定参数时,一种比较有效的方法是,用partial函数提取主要的一个参数固定其他参数。

比如,我们想用x去加一个固定值,那么我们就认为x是主要参数,固定y:

from functools import partial

partial_work = partial(work, y=1) # 提取x作为partial函数的输入变量
results = pool.map(partial_work, x)

 

总结:当函数的参数在不同时候的输入均不同,那么这种方法不太合适,可参考 https://www.cnblogs.com/arkenstone/p/6830714.html 的方法2和方法3。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM