【发布时间】:2022-01-16 02:55:17
【问题描述】:
我使用queue.Queue 类将任务从一个线程传递到另一个线程。后来我需要添加优先级,所以我将其更改为PriorityQueue,使用建议的PrioritizedItem(因为任务是dict,无法比较)。然后,在极少数情况下,它开始导致任务混淆。我花了一段时间才意识到/调试 PriorityQueue 中的相同优先级项目不会保持插入顺序,或者从调试的角度来看更糟糕的是,通常它们会这样做。
我猜,在谈到任务队列时,FIFO 是一种默认值。这就是为什么 Queue 不像 FifoQueue 那样被调用的原因,不是吗?因此,PriorityQueue 应该明确声明它不是同等优先级项目的 FIFO。不幸的是,Python doc 没有警告我们这一点,缺乏警告让我很头疼,可能其他人也很头疼。
我还没有找到任何现成的解决方案,但我很确定其他人可能需要一个 PriorityQueue 来保持同等优先级项目的插入顺序。因此这张票...
【问题讨论】:
标签: python priority-queue