Python-queue.task_done()的用途是什么?

我编写了一个脚本,该脚本具有多个线程(用创建threading.Thread),该线程从Queueusing中获取URL

queue.get_nowait(),然后处理HTML。我是多线程编程的新手,无法理解该queue.task_done()函数的用途。

Queue为空时,它将自动返回queue.Empty异常。所以我不明白每个线程都需要调用该task_done()函数。我们知道当队列为空时我们已经完成了队列,所以为什么我们需要通知它工作线程已完成工作(与队列无关,因为他们从队列中获得了URL)

有人可以给我提供一个代码示例(理想情况下使用urllib,文件I / O或斐波那契数字以外的其他东西并打印“

Hello”)向我展示如何在实际应用中使用此功能吗?

回答:

Queue.task_done那里不是为了工人的利益。它在那里得到支持Queue.join


如果我给您提供一盒工作任务,我是否在乎何时将所有物品都拆了?

不,我关心 何时 。看着一个空盒子不会告诉我。您和其他5个人可能仍在研究您开箱即用的东西。

Queue.task_done让工人说出 任务完成的时间

。等待所有工作完成的人Queue.join将等待,直到进行了足够的task_done调用为止,而不是在队列为空时。

以上是 Python-queue.task_done()的用途是什么? 的全部内容, 来源链接: utcz.com/qa/434853.html

回到顶部