了解python多处理管理器共享哪些对象的方法?

了解python多处理管理器共享哪些对象的方法?,python,multiprocessing,Python,Multiprocessing,在python多处理模块中,为了从远程管理器获取对象,大多数方法告诉我们需要构建一个getter来恢复每个对象: class QueueMgr(multiprocessing.managers.SyncManager): pass datos=Queue() resultados=Queue() topList=list(top) QueueMgr.register('get_datos',callable=lambda:datos) QueueMgr.register('get_resulta

在python多处理模块中,为了从远程管理器获取对象,大多数方法告诉我们需要构建一个getter来恢复每个对象:

class QueueMgr(multiprocessing.managers.SyncManager): pass
datos=Queue()
resultados=Queue()
topList=list(top)
QueueMgr.register('get_datos',callable=lambda:datos)
QueueMgr.register('get_resultados',callable=lambda:resultados)
QueueMgr.register('get_top',callable=lambda:topList)
def Cola_run():
    queueMgr=QueueMgr(address=('172.2.0.1', 25555),authkey="foo")
    queueMgr.get_server().serve_forever()
Cola=Thread(target=Cola_run)
Cola.daemon=True
Cola.start()
并且必须在客户端程序中声明相同的getter:

class QueueMgr(multiprocessing.managers.SyncManager): pass
QueueMgr.register('get_datos')
QueueMgr.register('get_resultados')
QueueMgr.register('get_top')
queueMgr=QueueMgr(address=('172.22.0.4', 25555),authkey="foo")
queueMgr.connect()
datos=queueMgr.get_datos()
resultados=queueMgr.get_resultados()
top=queueMgr.get_top()._getvalue()
好的,它涵盖了大多数用例。但我发现代码看起来很难看。也许我没有得到正确的食谱。但如果真的是这样,那么至少我可以在客户机中编写一些更好的代码,可能是自动声明getter,如果我能够提前知道管理器正在共享哪些对象的话。他们是这样做的吗


如果您认为multiprocessing.Manager()提供的SyncManager实例允许创建复杂的代理对象,但任何连接到此类SyncManager的客户端似乎都需要从其他位置获取对此类代理的引用。

没有什么可以阻止您对类进行内省,并且对于每个共享属性,生成getter并调用
寄存器

没有什么可以阻止您对类进行内省,并且对于每个共享属性,生成getter并调用
寄存器

我明白了。有什么标准的食谱吗?不过,我不确定它是否也适用于multiprocessing.Manager()生成的实例,是吗?我明白了。有什么标准的食谱吗?不过,我不确定它是否也适用于multiprocessing.Manager()生成的实例,是吗?