队列

2020-03-21  本文已影响0人  清水秋香

python Queue模块下队列有三种模式
先入先出 queue.Queue
后入先出queue.LifoQueue
优先级队列queue.PriorityQueue

Queue

q = queue.Queue(3)
# 队列中添加数据
q.put(1)
q.put(11)
# q.put(2)
# 添加数据不等待队列满了会报错
# q.put(3,block=False)
q.put_nowait(2)
# 获取队列中的数据,先添加的数据会先出来
print(q.get())
print(q.get())
print(q.get())
# 获取数据,等待5秒后还没有数据进行报错
# print(q.get(block=True,timeout=5))
# print(q.get_nowait())
print(q.qsize())
# 队列是否满了
print(q.full())
# 判断队列是否为空
print(q.empty())
# 向队列发送消息,执行完毕
q.task_done()
q.task_done()
q.task_done()
# join 判断队列中的任务是否执行完毕
print(q.join())

LifoQueue

import queue

q2 = queue.LifoQueue()
q2.put(1)
q2.put(11)
q2.put_nowait(2)
print(q2.get())
print(q2.get())
print(q2.get())
# 获取结果为2 11 1,其余方法无变化

PriorityQueue

q3 = queue.PriorityQueue(3)
q3.put((11, 5))
q3.put((1, 2))
q3.put((2, 3))
print(q3.get())
print(q3.get())
print(q3.get())
# 获取结果为(1, 2) (2, 3) (11, 5),其余方法无变化

三种模式的方法调用均相同,只不过返回结果的顺序不同

上一篇 下一篇

猜你喜欢

热点阅读