在python中的进程之间共享对象

时间:2017-12-18 22:42:55

标签: python-3.x python-multiprocessing

我正在寻找一个关于如何在python中的两个或多个进程之间共享复杂对象的简单示例。 在我的主要我有类似

的东西
select p.*
from FactInternetSales f
inner join DimProduct p on p.ProductKey = f.ProductKey
inner join (select p2.*
            from FactInternetSales f2
            inner join DimProduct p2 on p2.ProductKey = f2.ProductKey
            where  ProductAlternateKey = 'TI-M267') innerSelect on p.ProdctKey = innerselect.ProductKey
where  ProductAlternateKey ='BK-M18B-40'

等......每个类的定义如下:

if __name__ == "__main__":
    FirstClass().start()
    SecondClass().start()

我希望MySharedClass包含我需要的所有数据(自定义对象列表等),我可以从子进程访问和修改...其他子进程应该看到更新的数据。

我知道我应该使用经理,但文档看起来有点混乱我的技能。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

刚刚找到解决方案......主要:

from multiprocessing.managers import BaseManager

class ShareManager(BaseManager):
pass


ShareManager.register('SharedData', SharedData)

if __name__ == "__main__":
    manager = ShareManager()
    manager.start()
    shared = manager.SharedData()
    FirstClass(shared).start()

其中SharedData是我的共享类......这是子类:

class FirstClass(multiprocessing.Process):

    def __init__(self, shared):
        super(FirstClass, self).__init__()
        self.shared = shared

PS。 确保主线程不会死亡或者您将失去经理