我需要运行一些计算来更新对象属性。我想使用并行计算,因为我需要更新多个对象的属性,也就是说,我有多个对象,我需要对每个对象进行相同的计算。对象之间不共享信息。
我目前正在使用具有map
或类似功能的进程池,问题是这些进程复制对象,然后进行计算,而不是直接使用原始对象进行计算。有没有办法解决?
举个例子:
from multiprocessing import Pool
class A:
def __init__(self, init):
self.a = init
def func(self, b):
self.a = self.a + b
foo = A(2)
print(foo.a) # prints 2
p = Pool()
result = p.map(foo.func, (3,))
print(foo.a) #prints 2, should print 5
foo.func(3)
print(foo.a) #prints 5 as expected