繁体   English   中英

在multiprocessing.Manager上添加事件监听器

[英]Adding Event Listeners on multiprocessing.Manager

我有两台机器,现在孩子正在做一会儿1:语句,以不断检查保存作业的BaseManager。 这使它变得健谈。 有一个更好的方法吗?

您能否在经理上创建一个活动,说“嘿,我有一个新的工作孩子!” 像在C#中,您可以使用+ =和-=语法连接一个新事件?

很简单,孩子是这样的:

class QueueManager(BaseManager):
""" multiprocessing queue manager object """
     pass
if __name__ == "__main__":
    # get the get function
    QueueManager.register('get_queue')
    while 1:
       queue = m.get_queue()
       if queue.empty() == False and \
           queue.qsize() > 0:
           job_directory = queue.get()
           print job_directory

我正在做的就是从队列中拉出作业文件夹。 我想要一个更好的方法。 可以将事件连接起来吗?

谢谢

这里不需要繁忙的循环。 只需在while循环外调用一次get_queue ,然后在循环内直接使用queue.get()即可:

class QueueManager(BaseManager):
""" multiprocessing queue manager object """
     pass

if __name__ == "__main__":
    QueueManager.register('get_queue')
    queue = m.get_queue()
    while 1:
       job_directory = queue.get()
       print job_directory

管理器正在将Proxy返回给您在服务器上创建的Queue.Queue()对象,而不是实际Queue.Queue对象的副本。 您对Proxy执行的每个操作都会传递到服务器上Queue.Queue的实例,因此您可以像使用普通Queue一样使用它。 从客户端的角度来看, BaseManager子类返回的共享Queue实例与普通的Queue.Queue没什么不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM