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

Python队列get()/ task_done()问题

晏卓君
2023-03-14
问题内容

我的消费者队列:

m = queue.get()
queue.task_done()

<rest of the program>

问题:

  1. 是否task_done()有效地弹出m队列并释放消费者对队列的任何锁定?

  2. 我需要m在程序的其余部分中使用。它是安全的,或者我需要复制它之前,我打电话task_done()或者是m使用后task_done()

要开心


问题答案:

不,queue.get()将项目弹出队列。完成此操作后,只要生产者按应有的方式工作并且不再碰它,就可以随心所欲地对其进行操作。queue.task_done()调用只是为了通知队列您已经完成某件事(它甚至不知道特定项目,它只计算队列中未完成的项目),以便queue.join()知道工作已完成。



 类似资料:
  • 我们为了实现队列抽象数据类型创建一个新类。和前面一样,我们将使用列表集合来作为构建队列的内部表示。 我们需要确定列表的哪一端作为队首,哪一端作为队尾。Listing 1 所示的实现假定队尾在列表中的位置为 0。这允许我们使用列表上的插入函数向队尾添加新元素。弹出操作可用于删除队首的元素(列表的最后一个元素)。回想一下,这也意味着入队为 $$O(n)$$,出队为 $$O(1)$$。 class Qu

  • 我试图在运行rabbitmq 3.4.0的ubuntu 12.04机器上安装rabbitmq优先级队列。 根据中的说明http://www.rabbitmq.com/installing-plugins.html,我已复制下载的文件rabbitmq_priority_queue-3.4。x-3431dc1e。ez到/usr/lib/rabbitmq/lib/rabbitmq_server-3.4.

  • 2)Java的内置使用了两个锁:takeLock和putLock,并分别用在put()和take()中,我看到间隔队列是一个链表,不是线程安全的,那怎么行呢?

  • 问题内容: 我正在尝试在Python中的多处理库中使用队列。执行下面的代码后(打印语句起作用),但是在调用Queue上的join之后,这些进程没有退出,并且仍然存在。我如何终止其余过程? 谢谢! 问题答案: 尝试这个:

  • 本文向大家介绍Python实现队列的方法,包括了Python实现队列的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现队列的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 问题内容: 您是否知道/使用任何针对python的分布式作业队列?您可以共享链接或工具吗 问题答案: 如果您使用的是Django,那么除了进行多处理之外,还有Celery项目。