不共享代理对象的多处理

2024-09-30 14:28:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

问题是,对象似乎从来没有正确地反映在进程中

参考文件

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

但是,Client#2总是显示print bm.x.x行的AttributeError


Tags: 对象httpsselfregisterserver进程addressmanager