我找不到适合下一个任务的方法: 我有一个输入大规模[x1,x2,x3 ... xn]和要应用于大规模f(xi,param)中每个x的函数,因此该参数有八个可能的值,而函数的结果不不依赖于参数。因此,我需要针对所有可能的param值同时运行此函数f。哪个函数与哪个x配合使用绝对不重要。对于这八个函数f(xi,p1),f(xi,p2)... f(xi,p8)同时起作用,并且所有x将仅被处理一次,这一点很重要。
答案 0 :(得分:1)
似乎很简单。我不知道“所有x仅处理一次”的意思,但这听起来不可能。该功能仍必须针对每个参数分别调用(除非SO上的某些黑人魔术师可以证明我错了,这似乎是可能的)
from multiprocessing import Pool
def f(x, param):
...do stuff...
if __name__ == '__main__':
params = [1,2,3,4,5,6,7,8]
try:
pool = Pool(8)
pool.starmap(f, [(x,param) for param in params])
except SomeError:
...do error stuff...
finally:
pool.close()
pool.join()