我想获得队列中的下一个项目,但我不想将其出列。在 Python 的 queue.PriorityQueue
中有可能吗?从 文档 中,我看不出该怎么做
原文由 Jiew Meng 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想获得队列中的下一个项目,但我不想将其出列。在 Python 的 queue.PriorityQueue
中有可能吗?从 文档 中,我看不出该怎么做
原文由 Jiew Meng 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果 a 是 PriorityQueue 对象,您可以使用 a.queue[0]
获取下一项:
from queue import PriorityQueue
a = PriorityQueue()
a.put((10, "a"))
a.put((4, "b"))
a.put((3,"c"))
print(a.queue[0])
print(a.queue)
print(a.get())
print(a.queue)
print(a.get())
print(a.queue)
输出是:
(3, 'c')
[(3, 'c'), (10, 'a'), (4, 'b')]
(3, 'c')
[(4, 'b'), (10, 'a')]
(4, 'b')
[(10, 'a')]
但要注意多线程访问。
原文由 HYRY 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
当您根据理论从队列中获取项目时,它将从队列中删除。您必须编写自己的函数,它将为您提供 PriorityQueue 的最后一个元素。您可以通过继承 priorityqueue 创建一个 peek 函数。