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())
是一种单独遍历每个对象的好方法。 (还允许在其他地方更好地循环)
我在 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())
是一种单独遍历每个对象的好方法。 (还允许在其他地方更好地循环)