python 工具类之Queue组件详解用法
作者:剑客阿良_ALiang 时间:2023-08-05 23:59:10
简述
队列一直都是工程化开发中经常使用的数据类型,本篇文章主要介绍一下python queue的使用,会边调试代码,边说明方法内容。
环境
python: 3.6.13
单向队列
初始化单向队列
放置一些数据
可以使用full()方法判断队列是否已经塞满数据,可以通过qsize()方法查看队列内元素数量。
这时候我们从队列取出数据,看先取到的是什么。
现在队列里面只有两个数,我们再塞入3个数看一下。
这个时候我们继续塞入第六个数会怎么样呢?
可以看到如果塞入超过队列限定数量的元素,会阻塞住队列。所以在一般的项目工程中,我们会分成两个线程,一个消费数据,一个塞入队列数据。按照业务需求看是否需要限定队列长度。
先进后出队列
上面展示的是先进先出(FIFO)的单项队列,python的queue模块也提供先进后出(LIFO)的队列: LifoQueue,类似java的栈类型。
塞入数据后看取出的是在队列的什么位置。
可以看出从队列取出的是队尾数据。
优先级队列
按照自定的优先级来对队列数据自动排序:PriorityQueue。
塞入数据后,全部取出,打印看一下顺序是什么样的。
可以看出,书序是按照我们塞入数据的级别由小到大排序的。
双向队列
双向队列,顾名思义就是可以从队列两端进行处理:deque。
初始化,并塞入3个数据。
从左侧,也就是最前端塞入一个元素。看下效果。
可以自定义塞入元素的位置。
取出队尾的数据。
取出队首元素。
完整代码
import queue
# 单向队列
q = queue.Queue(5)
print(q.maxsize)
q.put(1)
q.put(2)
q.put(3)
print(q.full())
print(q.qsize())
print(q.get())
q.put(4)
q.put(5)
q.put(6)
q.put(7)
print(q.full())
print(q.qsize())
print(q.get())
# 先进后出队列
q = queue.LifoQueue(5)
q.put(1)
q.put(2)
q.put(3)
print(q.get())
# 优先级队列
q = queue.PriorityQueue(5)
q.put((5, "电"))
q.put((2, "雨"))
q.put((4, "雷"))
q.put((1, "风"))
while True:
print(q.get())
# 双向队列
q = queue.deque()
q.append(1)
q.append(2)
q.append(3)
q.appendleft(4)
q.insert(2, 5)
print(q.pop())
print(q.popleft())
来源:https://huyi-aliang.blog.csdn.net/article/details/120827420
标签:python,Queue组件,工具类
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python @property装饰器原理解析
2022-02-19 20:28:05
pandas DataFrame索引行列的实现
2023-12-16 09:52:55
记一次Oracle数据恢复过程
2024-01-14 03:38:57
结合OpenCV与TensorFlow进行人脸识别的实现
2021-07-06 08:44:28
![](https://img.aspxhome.com/file/2023/4/95824_0s.jpg)
python3实现将json对象存入Redis以及数据的导入导出
2022-05-05 16:31:27
![](https://img.aspxhome.com/file/2023/6/103366_0s.jpg)
Python机器视觉之基于OpenCV的手势检测
2021-06-12 10:54:11
![](https://img.aspxhome.com/file/2023/9/103359_0s.jpg)
Python获取秒级时间戳与毫秒级时间戳的示例代码
2022-05-05 22:13:00
Python3网络爬虫中的requests高级用法详解
2023-02-05 16:54:52
![](https://img.aspxhome.com/file/2023/3/124283_0s.jpg)
python matplotlib拟合直线的实现
2023-01-27 15:42:35
![](https://img.aspxhome.com/file/2023/8/84108_0s.png)
详解如何在ChatGPT内构建一个Python解释器
2022-06-18 21:37:38
![](https://img.aspxhome.com/file/2023/6/117286_0s.png)
超简单的Python HTTP服务
2023-01-22 06:19:15
关于Python与Golang语言的对比分析
2023-03-10 18:54:06
基于Python编写一个刷题练习系统
2022-10-01 13:28:34
![](https://img.aspxhome.com/file/2023/2/79442_0s.png)
Vue插槽slot详细介绍(对比版本变化,避免踩坑)
2024-05-13 09:13:39
![](https://img.aspxhome.com/file/2023/7/126447_0s.png)
Django REST框架创建一个简单的Api实例讲解
2023-04-28 01:02:40
![](https://img.aspxhome.com/file/2023/0/115410_0s.jpg)
SQL2005 学习笔记 窗口函数(OVER)
2024-01-27 09:50:49
论标志的简洁性
2009-10-27 16:05:00
![](https://img.aspxhome.com/file/UploadPic/200910/27/01-67s.jpg)
MySQL里的反斜杠(\\\\)的使用
2024-01-26 03:20:57
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2024-02-27 08:28:53
MySQL错误TIMESTAMP column with CURRENT_TIMESTAMP的解决方法
2024-01-25 20:47:47