class Obj1(object):
def __init__(self):
self.var = 1
def func1(self, r):
self.var = self.var + 2
class Obj2(object):
def __init__(self):
self.arr = []
self.arr.append(Obj1())
def parallel_func(self, i):
self.arr[i].func1(i)
print "11111 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", self.arr[i].var
def func3(self):
for i in range (3)
for i in range (2):
p = Process(target = self.parallel_func, args = (i,))
p.start()
print "22222 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", self.arr[i].var
p.join()
if __name__=='__main__':
var = Obj2()
var.func3()
目标:使用oops&用于并行化代码中的“parallel_func”的多处理概念
问题:根据预期,两个print语句都应该提供相同的输出。但是,它们提供了不同的结果。对于每次迭代,单个进程引用第一个初始化变量而不是先前的值。我需要该过程来使用其先前的过程结果。
问题:
1.由于我使用了oops概念,我想知道如何在对象内部处理全局变量
2.在每个进程完成后是否有任何其他方法来更新变量,以便下一个获取最新值。我已经尝试了队列概念,但仍然存在问题
3. multiprocessing.manager功能可以解决这个问题吗?如果是的话,你能帮帮我吗?
任何其他解决方法都将受到高度赞赏。