Python PriorityQueue 只获取元组的一部分

Python PriorityQueue gets only part of tuple

我在 Python 中遇到优先级队列问题。我放入一个元组,当我遍历它时,我得到了元组。我想要并期望发生的是 get() 函数只是 return 整个元组而不是第一个元组的第一个值。

加入队列:

await priority_queue.put((3, 'Value1', 'Value2'))

队列迭代次数:

for i in await priority_queue.get():
    print(i)

我得到的结果:

> 3
> 'Value1'
> 'Value2'

我想要的结果:

> (3, 'Value1', 'Value2')

根据docs

The lowest valued entries are retrieved first (the lowest valued entry is the one returned by sorted(list(entries))[0]). A typical pattern for entries is a tuple in the form: (priority_number, data).

这让我觉得有些不对劲,虽然我不完全理解这里的意思除了它被排序之外。

问题在于我是如何考虑队列的。 (感谢@deadshot)

print(priority_queue.get())

有效,如果您只想要队列中的第一个对象,则没有迭代。

while not priority_queue.empty():
    print(await priority_queue.get())

是一种单独遍历每个对象的好方法。 (还允许在其他地方更好地循环)