在 python 中的进程之间共享对象
Share object between processes in python
我正在寻找一个关于如何在 python 中的两个或多个进程之间共享复杂对象的非常简单的示例。
在我的主要我有类似
的东西
if __name__ == "__main__":
FirstClass().start()
SecondClass().start()
等...每个 class 定义如下:
class FirstClass(multiprocessing.Process):
def __init__(self):
super(FirstClass, self).__init__()
[...]
我想要一个 MySharedClass,其中包含我需要的所有数据(自定义对象列表等),我可以从子进程访问和修改这些数据...其他子进程当然应该看到更新的数据。
我知道我应该使用管理器,但文档看起来对我的技能来说有点混乱。
提前致谢。
刚刚找到解决方案...主要:
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... 这是子 class:
class FirstClass(multiprocessing.Process):
def __init__(self, shared):
super(FirstClass, self).__init__()
self.shared = shared
PS。 确保主线程不会死掉,否则你会失去管理器
我正在寻找一个关于如何在 python 中的两个或多个进程之间共享复杂对象的非常简单的示例。 在我的主要我有类似
的东西if __name__ == "__main__":
FirstClass().start()
SecondClass().start()
等...每个 class 定义如下:
class FirstClass(multiprocessing.Process):
def __init__(self):
super(FirstClass, self).__init__()
[...]
我想要一个 MySharedClass,其中包含我需要的所有数据(自定义对象列表等),我可以从子进程访问和修改这些数据...其他子进程当然应该看到更新的数据。
我知道我应该使用管理器,但文档看起来对我的技能来说有点混乱。 提前致谢。
刚刚找到解决方案...主要:
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... 这是子 class:
class FirstClass(multiprocessing.Process):
def __init__(self, shared):
super(FirstClass, self).__init__()
self.shared = shared
PS。 确保主线程不会死掉,否则你会失去管理器