【发布时间】:2012-07-23 21:00:07
【问题描述】:
python 新手并试图理解多线程。这是Queue上的python文档中的一个示例
对于我的生活,我不明白这个例子是如何工作的。在 worker() 函数中,有一个无限循环。工人如何知道何时退出循环?似乎没有断裂条件。
最后,join 到底在做什么?我不应该加入线程吗?
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
还有一个问题,什么时候应该使用多线程,什么时候应该使用多处理?
【问题讨论】:
标签: python multithreading thread-safety