Python - queue [queue] task_done 和 join Detail-II 的基本用法。基本用法
最编程
2024-03-14 21:09:04
...
使用队列时,我们通常使用put()
方法将项目添加到队列中,然后使用get()
方法从队列中获取项目进行处理。在处理完一个项目后,我们可以使用task_done()
方法通知队列管理器,这个项目已经被处理完了。
如果我们使用了join()
方法等待所有的项目都被处理完,那么这个方法会在所有的项目都被处理完后返回。
示例代码
import queue
import threading
def worker(q):
while True:
item = q.get()
print("Processing", item)
q.task_done()
if __name__ == '__main__':
q = queue.Queue()
for i in range(5):
q.put(i)
for i in range(3):
t = threading.Thread(target=worker, args=(q,))
t.daemon = True
t.start()
q.join()
print("All items processed.")
在上面的示例代码中,我们首先创建了一个队列q,并向其添加了5个项目。然后,我们创建了3个线程,每个线程使用worker()
函数从队列中获取一个项目,并使用task_done()
方法将其处理掉。由于我们使用了join()
方法等待所有的项目都被处理完,因此在所有的项目都被处理完后,最后输出"All items processed."。
运行结果:
在这个示例中,task_done()
方法每次从队列中取出一个项目就会被调用一次,因此,队列管理器最终会知道所有的项目都已经被处理完毕。