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

标签 python dictionary 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)

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

最佳答案

map() 函数仅接受单个迭代。因此,也许您可​​以创建一个可迭代函数来返回您需要的不同元组(或者只是创建一个元组数组并传递它)。

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

关于python - 具有多个参数的多处理映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22088266/

相关文章:

ios - Swift:如何将字典数组添加到数组?

python - 确定 Python JoinableQueue 中有多少项

android - Android 中的 SharedPreferences 未在多个正在运行的进程中获取最近更新的值

python - 如何从 "B"类中调用 "A"类的实例方法?

c# - 在 C# 中将一个 int 数组拆分为多个 int 数组的列表

python - 如何在进程之间共享一个类?

python - 如何在页面上渲染 Flask-SQLAlchemy 中的图像?

python - 从具有可变长度的列表字典创建数据框

python - 将元组键字典子集到具有基于键的名称的字典中

python - 无法通过多处理同时调用多个函数