如何在 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])
代替,因为那里支持酸洗实例方法。
我有一个 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])
代替,因为那里支持酸洗实例方法。