【发布时间】:2013-02-16 21:54:40
【问题描述】:
我是 python 新手(我来自 PHP),我一直在阅读教程并尝试了几天,但我无法理解这个队列示例 (http://docs.python.org/2/library/queue.html)
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
q = Queue()
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in source():
q.put(item)
q.join() # block until all tasks are done
我不明白的是工作线程是如何完成和存在的。我已经阅读了 q.get() 阻塞,直到一个项目可用,所以如果所有项目都已处理并且队列中没有任何项目,为什么 q.get() 不会永远阻塞?
【问题讨论】:
标签: python multithreading queue