在Python中的进程之间共享对象 [英] Share object between processes in python

查看:13
本文介绍了在Python中的进程之间共享对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一个非常简单的示例,说明如何在Python中的两个或多个进程之间共享复杂对象。 在我的主机上,我有类似

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

等。每个类的定义如下:

class FirstClass(multiprocessing.Process):
    def __init__(self):
        super(FirstClass, self).__init__()
[...]

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

我知道我应该使用管理器,但文档对于我的技能来说看起来有点令人困惑。 提前谢谢。

推荐答案

刚找到解决方案...Main:

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。确保主线程不会死,否则您将失去管理器

这篇关于在Python中的进程之间共享对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆