目录
一、核心作用
解耦:使程序直接实现松耦合,修改一个函数,不会有串联关系。
提高处理效率:FIFO=现进先出,LIFO=后入先出。
二、Python四种类型的队例
Queue:FIFO,即first in first out 先进先出
LifoQueue:LIFO,即last in first out 后进先出
PriorityQueue:优先队列,级别越低,越优先
deque:双边队列
三、代码使用示例
依赖3个包:queue库中的Queue,LifoQueue,PriorityQueue
queue_demo.py
# -*- coding: UTF-8 -*-
"""
# rs
"""
import queue
# (1)Queue, 先进先出队列
# 基本FIFO队列 先进先出 FIFO即First in First Out,先进先出
# maxsize设置队列中,数据上限,小于或等于0则不限制,容器中大于这个数则阻塞,直到队列中的数据被消掉
q_fifo = queue.Queue(maxsize=0)
# 写入队列数据
q_fifo.put(0)
q_fifo.put(1)
q_fifo.put(2)
# 输出当前队列所有数据
print(q_fifo.queue)
# 删除队列数据并返回
print(q_fifo.get())
# 删除所有队列数据
print(q_fifo.queue)
# (2)LifoQueue, 后进先出队列
# LIFO即Last in First Out,后进先出。与栈的类似,使用也很简单,maxsize用法同上
q_lifo = queue.LifoQueue(maxsize=0)
q_lifo.put(0)
q_lifo.put(1)
q_lifo.put(2)
# 输出当前队列所有数据
print(q_lifo.queue)
# 删除队列数据并返回
print(q_lifo.get())
# 删除所有队列数据
print(q_lifo.queue)
# (3)PriorityQueue, 优先队列
# 优先级设置数越小等级越高
q_priority = queue.PriorityQueue(maxsize=0)
q_priority.put((9, 'a'))
q_priority.put((7, 'c'))
q_priority.put((1, 'd'))
# 输出队列全部数据
print(q_priority.queue)
# 取队列数据,可以看到,是按优先级取的
print(q_priority.get())
print(q_priority.get())
print(q_priority.queue)
输出结果:
deque([0, 1, 2])
0
deque([1, 2])
[0, 1, 2]
2
[0, 1]
[(1, 'd'), (9, 'a'), (7, 'c')]
(1, 'd')
(7, 'c')
[(9, 'a')]