我正在寻找一个关于如何在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包含我需要的所有数据(自定义对象列表等),我可以从子进程访问和修改...其他子进程应该看到更新的数据。
我知道我应该使用经理,但文档看起来有点混乱我的技能。 提前谢谢。
答案 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。 确保主线程不会死亡或者您将失去经理