LIFO队列 (先进后出)
LifoQueue(maxsize=0)
LIFO即Last in First Out,后进先出。与栈的类似,使用和先进先出队列相同,只是取出数据的顺序不同,
from queue import Queue,LifoQueue,PriorityQueue
q = LifoQueue(5) #创建队列对象
for i in range(5):
q.put(i,block=False) #给队列中添加数据
print(q.full()) #判断队列是否已满
print('队列中元素个数为:',q.qsize())
while not q.empty(): #判断是否为空
print(q.get())#从队列中取出数据
print(q.empty()) #判断队列是否为空
print('队列中元素个数为:',q.qsize())
运行结果:
True
队列中元素个数为: 5
4
3
2
1
0
True
队列中元素个数为: 0
优先级队列PriorityQueue
可以在put数据时设定取出的优先级,
put()
中有两个参数,第一个是优先级,第二个是要存入的元素值,- 两个参数必须以
元组
的格式存入; - 当优先级一样时,会按照存入数值从大到小顺序取出;
from queue import PriorityQueue
q = PriorityQueue()
q.put((1,11))
q.put((2,22))
q.put((0,33))
q.put((0,1))
q.put((0,3))
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())
运行结果:
(0, 1)
(0, 3)
(0, 33)
(1, 11)
(2, 22)