在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的客户端似乎都需要从其他地方获取对此类代理的引用。在
没有什么可以阻止您对类进行内省,并为每个共享属性生成getter并调用
register
。在相关问题 更多 >
编程相关推荐