【发布时间】:2017-09-12 08:18:17
【问题描述】:
我有这样一个简单的任务:
def worker(queue):
while True:
try:
_ = queue.get_nowait()
except Queue.Empty:
break
if __name__ == '__main__':
manager = multiprocessing.Manager()
# queue = multiprocessing.Queue()
queue = manager.Queue()
for i in range(5):
queue.put(i)
processes = []
for i in range(2):
proc = multiprocessing.Process(target=worker, args=(queue,))
processes.append(proc)
proc.start()
for proc in processes:
proc.join()
似乎 multiprocessing.Queue 可以完成我需要的所有工作,但另一方面,我看到许多 manager().Queue() 的示例并且无法理解我真正需要什么。看起来 Manager().Queue() 使用某种代理对象,但我不明白这些目的,因为 multiprocessing.Queue() 在没有任何代理对象的情况下做同样的工作。
所以,我的问题是:
1) multiprocessing.Queue 和 multiprocessing.manager().Queue() 返回的对象有什么区别?
2) 我需要使用什么?
【问题讨论】:
标签: python queue multiprocessing python-multiprocessing