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

2024-05-20 23:09:47 发布

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

在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:

^{pr2}$

好的,它涵盖了大多数的使用情况。但我发现代码看起来很难看。也许我没有得到正确的食谱。但如果真的是这样,那么至少我可以在客户机中编写一些更好的代码,也许可以自动声明getter,前提是我能够提前知道管理器共享的对象是什么。他们是一种方法吗?在

如果您认为SyncManager的实例由多处理管理器()允许创建复杂的代理对象,但任何连接到此类SyncManager的客户端似乎都需要从其他地方获取对此类代理的引用。在


Tags: 对象方法lambdaregister管理器getqueuegetter