当前位置: 首页 > 面试题库 >

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

胡鸿禧
2023-03-14
问题内容

我编写了一个脚本,该脚本具有多个线程(用创建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 语句。我已经使用Python几个月了,甚至不知道它的存在!考虑到它的地位有些晦涩,我认为值得一问: 语句旨在用于什么? 你用它来做什么? 我需要了解任何陷阱,还是与其使用相关的常见反模式?有什么比这更好用的情况吗? 为什么没有更广泛地使用它? 哪些标准库类与之兼容? 问题答案: 我相信这已经在我之前的其他用户那里得到了回答,因此我仅出于完整性的考虑而添加

  • 问题内容: 的用途是什么? 我知道你可以在表上进行传递参数。 我还可以指定时间增量吗? 它是如何工作的?它是“拆包”类吗?喜欢a,b=1,2吗? 问题答案: 你可以用来让函数接受任意数量的关键字参数(表示“关键字参数”): 你还可以在调用函数时使用语法,方法是构造关键字参数字典并将其传递给函数: 在Python指南,包含了如何工作的,有一些很好的例子沿着一个很好的解释。 对于使用Python 3的

  • 问题内容: 我只想知道 到底是 什么 意思 ?甚至在SO上也没有在官方文档中找到任何解释。 如果您能提供一些例子,我将非常高兴。 问题答案: 请参阅PEP 366 和导入系统参考文档: 提议的主要更改是引入了新的模块级别属性。如果存在,则相对导入将基于此属性而非模块属性。 和 * 应该设置模块的属性。它的值必须是字符串,但可以与其值相同。如果该属性设置为或丢失,则导入系统将使用更合适的值填充该属性

  • 问题内容: 我不了解Java的这一功能。我知道它使编码更容易,有时看起来更整洁,但这的实际用途是什么?相反,我觉得最好显示警告,因为将来任何人在修改代码之前都可以引用它们。这@SuppressWarnings是否提高了编译效率,还是根据任何编码标准? 问题答案: 其他答案已经解释了很多用例,但是我想强调一点, 有时您绝对需要使用它来克服语言本身的局限性,在这些情况下,使用绝对是合法的。 在其他情况

  • 问题内容: java中有什么用? 请解释一下。 问题答案: 可能这个例子会帮助您。

  • 本文向大家介绍sinon.js的用途是什么?,包括了sinon.js的用途是什么?的使用技巧和注意事项,需要的朋友参考一下 SinonJS提供独立的测试间谍,存根和模拟。这是一个我们可以用来创建用于单元测试的对象模拟的库。 间谍-可以用来追踪执行情况的伪造函数。 存根-函数替换,我们可以从中返回所需的内容或使我们的函数以适合我们测试多个场景的方式工作。 嘲笑-假方法 所有这些对象都有助于对我们的代