具有不同功能的python多重处理

时间:2018-08-21 15:03:22

标签: python multiprocessing

我找不到适合下一个任务的方法: 我有一个输入大规模[x1,x2,x3 ... xn]和要应用于大规模f(xi,param)中每个x的函数,因此该参数有八个可能的值,而函数的结果不不依赖于参数。因此,我需要针对所有可能的param值同时运行此函数f。哪个函数与哪个x配合使用绝对不重要。对于这八个函数f(xi,p1),f(xi,p2)... f(xi,p8)同时起作用,并且所有x将仅被处理一次,这一点很重要。

1 个答案:

答案 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()