我可以从 PriorityQueue 中获取一个项目而不删除它吗?

新手上路,请多包涵

我想获得队列中的下一个项目,但我不想将其出列。在 Python 的 queue.PriorityQueue 中有可能吗?从 文档 中,我看不出该怎么做

原文由 Jiew Meng 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 965
2 个回答

当您根据理论从队列中获取项目时,它将从队列中删除。您必须编写自己的函数,它将为您提供 PriorityQueue 的最后一个元素。您可以通过继承 priorityqueue 创建一个 peek 函数。

原文由 Nilesh 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题