2024-03-29 06:43:18 发布
网友
我想让下一个项目排队,但我不想让它出列。在Python的优先级队列中是否可能?从docs中,我看不出怎么能做到
理论上,当您从队列中获取项时,它将从队列中移除。您必须编写自己的函数,该函数将为您提供PriorityQueue的最后一个元素。您可以通过继承priorityqueue来创建一个peek函数。
如果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 print a.get() print a.queue print a.get() print a.queue
输出为:
[(3, 'c'), (10, 'a'), (4, 'b')] (3, 'c') [(4, 'b'), (10, 'a')] (4, 'b') [(10, 'a')]
但是要小心多线程访问。
如果要PriorityQueue中的下一个元素,请按元素插入的顺序使用:
for i in range(len(queue)): print queue.queue[i]
这不会弹出任何东西。
如果要按优先级顺序排列,请使用:
for i in range(len(queue)): temp = queue.get() queue.put(temp) print temp
如果使用元组而不是单个变量,请将temp替换为:
((temp1,temp2))
理论上,当您从队列中获取项时,它将从队列中移除。您必须编写自己的函数,该函数将为您提供PriorityQueue的最后一个元素。您可以通过继承priorityqueue来创建一个peek函数。
如果a是PriorityQueue对象,则可以使用a.queue[0]获取下一个项:
输出为:
但是要小心多线程访问。
如果要PriorityQueue中的下一个元素,请按元素插入的顺序使用:
这不会弹出任何东西。
如果要按优先级顺序排列,请使用:
如果使用元组而不是单个变量,请将temp替换为:
相关问题 更多 >
编程相关推荐