在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。
原文地址:https://www.cnblogs.com/AliceYing/p/11776060.html
时间: 2024-10-07 08:10:16