欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

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()方法每次从队列中取出一个项目就会被调用一次,因此,队列管理器最终会知道所有的项目都已经被处理完毕。