python专题queue队列
Posted 知识追寻者[同公众号]
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python专题queue队列相关的知识,希望对你有一定的参考价值。
一 前言
本篇内容关于python队列的一些小知识,读者们抽空就看看吧!
公众号:知识追寻者
知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)
二 队列介绍
队列的常用方法
put
(item, block=True, timeout=None)存值;如果设置 block = True, timeout=None(默认) ,等待获取空闲的插槽入值;block =False ,立即获取插槽,否则抛出Full异常;如果timeout设置值,如果没有在规定时间内没有获取空闲的插槽抛出Full异常get
(block=True, timeout=None)取值;如果设置 block = True, timeout=None默认,等待获取值;如果设置block =False,立即获取值,如果未拿到值抛出 Empty异常;如果timeout设置值,在规定时间内未获取到值抛出Empty异常;empty
()判断队列是否为空,返回布尔值;qsize
()返回队列中元素个数join
()等到队列为空,该行语句下面的语句才会执行full
()检查队列是否已满,返回布尔值;put_nowait
(item); 等同于put(item, False)
.get_nowait
(); 等同于 get(False) 。
2.1 Queue(maxsize)
Queue(maxsize);先进先出队列 First In First Out(FIFO),类比管道,乒乓球从一端进去,从一端出来,先进去球的先出来;maxsize 为队列最大值,当数量超过maxsize值时队列进入阻塞状态;
import queue
que = queue.Queue(3)
# 入队
for num in range(3):
que.put(num)
# 出队
for num in range(3):
print(que.get())
输出
0
1
2
2.2 LifoQueue(Queue)
LifoQueue(Queue) ; 先进后出队列(FILO);类比叠盘子,先放的叠子位于底层,后放的叠子位于顶层,取叠子的时候自然先从顶层获取;
que = queue.LifoQueue(3)
# 入队
for num in range(3):
que.put(num)
# 出队
for num in range(3):
print(que.get())
输出
2
1
0
2.3 PriorityQueue(Queue)
PriorityQueue(Queue);put进去的是一个元祖,(优先级,数据) ,数字越小,优先级越高,优先级越高,先出队列;
que = queue.PriorityQueue(3)
# 入队
que.put((2,‘z‘))
que.put((6,‘x‘))
que.put((5,‘q‘))
# 出队
for num in range(3):
print(que.get())
输出
(2, ‘z‘)
(5, ‘q‘)
(6, ‘x‘)
2.4 SimpleQueue
SimpleQueue() 简单队列(FIFO); 没有大小限制,没有队列的一些高级功能;
que = queue.SimpleQueue()
# 入队
for num in range(3):
que.put(num)
# 出队
for num in range(3):
print(que.get())
输出
0
1
2
三 官方文档
https://docs.python.org/3/library/queue.html
以上是关于python专题queue队列的主要内容,如果未能解决你的问题,请参考以下文章