具有多个参数的多处理映射

时间:2014-02-28 06:52:02

标签: python map multiprocessing

鉴于我的算法的随机结构,我希望并行运行数百次。参数每次都保持不变。

两种实现都会引发某种异常(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)

并行多个参数运行函数的最快最方便的方法是什么?

1 个答案:

答案 0 :(得分:1)

map()函数只需要一次迭代。所以也许你可以创建一个可迭代的函数来返回你需要的不同元组(或者只是创建一个元组数组并传递它)。

请注意,在尝试跨进程边界发送对象时可能会遇到问题。 See my answer here in which I tackled the same issue