从进程中获取值并在多处理中更新初始值 - Python

时间:2013-09-18 14:01:34

标签: python

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功能可以解决这个问题吗?如果是的话,你能帮帮我吗? 任何其他解决方法都将受到高度赞赏。

0 个答案:

没有答案