[英]Adding values to set contained in Multiprocessing.Manager().list()
[英]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.