如何在 Python 2.7 中并行调用来自不同实例化的 class 方法?

How to call class methods from different instantiations in parallel in Python 2.7?

我有一个 class,其中包含执行计算的函数。如果我有这些对象的多个实例,我该如何进行并行计算?

class SomeClass:
    def __init__(self, arg):
    ....
    def compute(self):
    ....

然后在不同的脚本中:

from multiprocessing import Pool
from wherever import SomeClass
    g1 = SomeClass(arg1)
    g2 = SomeClass(arg2)
    pool = Pool(processes = 2)

如何让一名工人做 g1.compute() 而另一名工人做 g2.compute()?

在 python2.7 上,您必须定义一个辅助函数,该函数在给定参数上调用计算方法,然后您可以将其与 pool.map():

一起使用
def call_compute(o):
    return o.compute()
...
result = pool.map(call_compute, [g1, g2])

在 python3(在 3.5 上测试)可以使用 pool.map(SomeClass.comute, [g1, g2]) 代替,因为那里支持酸洗实例方法。