有没有办法为每个优先级获取优先级队列的.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()?希望这是有道理的。
答案 0 :(得分:1)
我能看到的最简单的方法是
from collections import Counter
sizeByPriority = Counter(priority for priority, _elem in q.queue)
但当然这需要遍历整个队列,这在您的情况下可能会令人望而却步,并且可能不是线程安全的。