Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有不同函数的python多处理_Python_Multiprocessing - Fatal编程技术网

具有不同函数的python多处理

具有不同函数的python多处理,python,multiprocessing,Python,Multiprocessing,我无法为下一个任务找到合适的方法: 我有一个输入massible[x1,x2,x3…xn]和函数,我想从massible f(xi,param)应用到每个x,所以这个param有八个可能的值,函数的结果不依赖于param。所以我需要同时为param的所有可能值运行这个函数f。哪一个函数和哪一个x一起工作绝对不重要。这对所有这八个函数f(xi,p1),f(xi,p2)都很重要。。。f(xi,p8)同时工作,所有的x将只被处理一次。似乎非常简单。我不知道你所说的“所有的x只会被处理一次”是什么意思,

我无法为下一个任务找到合适的方法:
我有一个输入massible[x1,x2,x3…xn]和函数,我想从massible f(xi,param)应用到每个x,所以这个param有八个可能的值,函数的结果不依赖于param。所以我需要同时为param的所有可能值运行这个函数f。哪一个函数和哪一个x一起工作绝对不重要。这对所有这八个函数f(xi,p1),f(xi,p2)都很重要。。。f(xi,p8)同时工作,所有的x将只被处理一次。

似乎非常简单。我不知道你所说的“所有的x只会被处理一次”是什么意思,但这听起来是不可能的。对于每个参数,仍然必须单独调用该函数(除非某个黑色魔术师在SO上证明我错了,这似乎是可能的)


你为什么要把它包装成一个赤裸裸的尝试,除了?可能应该在我的帖子中提到,以捕捉他认为相关的任何错误,这只是为了我的例子赤裸裸。哎呀。如果您不关心错误,可以使用try/finally来确保池在之后关闭并停止。这不会按原样工作,因为您只是将参数传递给
f
,而不是
x
列表。您可能需要映射
部分(f,x)
或闭包。或者映射到
((x,param)表示param中的param)
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()