下面是我如何解決這個問題的一個簡單例子from functools import partial
from multiprocessing import Pool
def VariadicLifter(func, args):
return func(*args)
def func(x,y,z,a):
return x+2*y+3*z+4*a
if __name__ == '__main__':
func_ = partial( func, 500, 1007)
lfunc_ = partial( VariadicLifter, func_)
RANGE = zip( range(10,31),range(10,31) )
pool = Pool(processes=6)
result_array = pool.map( lfunc_, RANGE )
pool.close()
pool.join()
這是有效的:每次調用lfunc_U的結果都在result\u數組中可用。在
現在,我嘗試在另一個上下文中應用這個模式,得到了錯誤消息。在
^{pr2}$
但是如果我用一個常規映射替換多處理映射,程序運行就沒有問題。
多處理池的函數參數是否有限制?
(我的理解是,至少lambda函數不能用于多處理池)
謝謝