多进程共享进程之间的内存

时间:2019-07-28 16:57:01

标签: multithreading parallel-processing multiprocessing python-multiprocessing python-multithreading

我试图通过从正在多进程上运行的另一个函数中调用类的函数来更新类的变量。

要获得所需的结果,进程( p1 )需要更新变量“ transaction”,然后应由进程( p2 < / strong>)

我尝试了下面的代码,我知道我应该使用Multiprocess.value或manager来达到所需的结果,并且由于要更新的​​变量在另一个类中,因此我不确定该怎么做

下面是代码:

from multiprocessing import Process
from helper import Helper
camsource = ['a','b'] 
Pros = []




def sub(i):
    HC.trail_func(i)


def main():

  for i in camsource:
     print ("Camera Thread {} Started!".format(i))
     p = Process(target=sub, args=(i))
     Pros.append(p)
     p.start()

  # block until all the threads finish (i.e. block until all function_x calls finish)    
  for t in Pros:
     t.join()


if __name__ == "__main__":
    HC = Helper()
    main()

这是帮助程序代码:

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

class Helper():
    def __init__(self):
        self.transactions = []

    def trail_func(self,preview):

        if preview == 'a':
            self.transactions.append({"Apple":1})
        else:
            if self.transactions[0]['Apple'] == 1:
                self.transactions[0]['Apple'] = self.transactions[0]['Apple'] + 1
            print (self.transactions)

所需输出:
p1

transactions = {"Apple":1}

p2

transactions = {"Apple":2}

1 个答案:

答案 0 :(得分:0)

我最近发布了this module,可以为您的代码提供帮助,因为所有数据框架(可以保存任何类型的数据的数据模型)都在它们上具有锁为了解决并发问题。无论如何,请看一下README文件和示例。

如果您想检查一下,我也做了一个示例here