鉴于我的算法的随机结构,我希望并行运行数百次。参数每次都保持不变。
两种实现都会引发某种异常(PicklingError或TypeError)。
from multiprocessing import Pool
from itertools import izip, repeat
if __name__ == '__main__':
G = Class1Object()
S = Class2Object()
pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
# take 1 tuple input
# parfun = lambda (G,S): fun(G,S)
# T = pool.map(parfun, izip(repeat(G, 2), repeat(S, 2)))
# take 2 arguments
T = pool.map(fun, [G]*2, [S]*2)
并行多个参数运行函数的最快最方便的方法是什么?
答案 0 :(得分:1)
map()
函数只需要一次迭代。所以也许你可以创建一个可迭代的函数来返回你需要的不同元组(或者只是创建一个元组数组并传递它)。
请注意,在尝试跨进程边界发送对象时可能会遇到问题。 See my answer here in which I tackled the same issue