1
我有一个由对象列表组成的模拟。我想在所有这些对象上并行调用一个方法,因为它们都不依赖于另一个,使用线程池。你不能腌制的方法,所以我想用一个包装函数有副作用做类似下面的:如何在一组对象上并行调用方法?
from multiprocessing import Pool
class subcl:
def __init__(self):
self.counter=1
return
def increment(self):
self.counter+=1
return
def wrapper(targ):
targ.increment()
return
class sim:
def __init__(self):
self.world=[subcl(),subcl(),subcl(),subcl()]
def run(self):
if __name__=='__main__':
p=Pool()
p.map(wrapper,self.world)
a=sim()
a.run()
print a.world[1].counter #should be 2
然而,函数调用没有在预期的副作用数组中的实际对象。有没有办法简单地使用线程池和映射来处理这个问题,还是我必须按照原始函数调用和元组/列表/字符串(或者使用多处理或其他并行库获得更详细的说明)来做所有事情?