1
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”

问题:按照预期,两个打印语句应该给出相同的输出。但是,它们提供了不同的结果。对于每次迭代,单个进程引用第一个初始化变量,而不是其先前的值。我需要该过程来使用其先前的过程结果。

问题:
1.由于我使用了oops的概念,我想知道全局变量在对象内部是如何处理的。
2.有没有其他方法在每个过程完成后更新变量,以便下一个获得最新值。我已经尝试过队列概念,但问题仍然存在。
3. multiprocessing.manager 功能可以解决这个问题吗?如果是的话,你能帮我吗?
4. 任何其他解决此问题的方法都将受到高度赞赏。

4

0 回答 0