python3 优先级队列大小?

python3 priorityqueue size by priority?

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

假设我有一个对象,我会将其放入优先级队列,优先级基于 some_variable ...

的状态
q = PriorityQueue()

if some_variable:
    q.put((1, my_object))
else:
    q.put((2, my_object))

然后我可以通过询问某种 .qsize() 方法来找出答案,例如可能是...的变体

q.qsize() 

但我不想知道队列的总大小,而是想知道两个单独的 'groups'/priorities(qsize where priority==1, qsize where priority==2 ), 在这种情况下。

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

我认为最简单的方法是

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

但这当然需要遍历整个队列,这在您的情况下可能是禁止的,并且可能不是线程安全的。