首页 > 解决方案 > 多处理不共享代理对象python

问题描述

我正在尝试使用 Pythonmultiprocessing模块在两台不同计算机上的 2 个进程之间共享一个对象。

问题是对象似乎永远不会在流程中正确反映。

参考文档

https://docs.python.org/2.7/library/multiprocessing.html#multiprocessing.managers.SyncManager

https://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.Namespace

我相信这将创建一个在两个客户端之间共享的对象,但事实并非如此

class BosunManager(SyncManager):

    def __init__(self, server=True, **kwargs):
        # () -> None
        super(BosunManager, self).__init__(**kwargs)

    def register_functions(self):
        self.x = self.Namespace()

服务器启动程序

bosun_manager = BosunManager(address=('', 50020), authkey='abracadabra')
bosun_manager.start()
bosun_manager.register_functions()

客户计划 #1

from bosun.multi_process_manager import BosunManager
bm = BosunManager(server=False, address=('', 50020), authkey='abracadabra')


bm.connect()

bm.register_functions()
bm.x.x =10 # <---- SETTING X HERE

客户计划 #2

from bosun.multi_process_manager import BosunManager

bm = BosunManager(server=False, address=('', 50020), authkey='abracadabra')
bm.connect()
bm.register_functions()
print bm.x.x

但是客户端 #2始终显示该print bm.x.x行的 AttributeError

标签: pythonpython-2.7

解决方案


推荐阅读