python3 priorityqueue大小优先级?

时间:2018-01-12 21:44:18

标签: python python-3.x queue priority-queue

有没有办法为每个优先级获取优先级队列的.size()?

说我有一个对象,我将把它放在一个优先级队列中,优先级基于some_variable的状态......

q = PriorityQueue()

if some_variable:
    q.put((1, my_object))
else:
    q.put((2, my_object))
然后,我可以通过询问某种.qsize()方法找出答案,例如可能是...的变体。

q.qsize() 

但不是队列的总大小,我想知道两个独立的' /优先级中的每一个的大小(qsize,其中priority == 1,qsize,其中优先级== 2),在这种情况下。

而不仅仅是总q.qsize()?希望这是有道理的。

1 个答案:

答案 0 :(得分:1)

我能看到的最简单的方法是

from collections import Counter
sizeByPriority = Counter(priority for priority, _elem in q.queue)

但当然这需要遍历整个队列,这在您的情况下可能会令人望而却步,并且可能不是线程安全的。