Python Queue组件详解:单向、双向、LIFO与PriorityQueue用法

周末不加班
周末不加班
发布时间:2026-10-14| 6人浏览过
原创

本文详解Python中queue模块的四种核心队列类型:单向队列(Queue)、先进后出队列(LifoQueue)、优先级队列(PriorityQueue)及双向队列(deque)。通过代码示例演示初始化、数据插入、容量限制、阻塞机制及元素取出顺序,帮助开发者根据业务场景选择合适的队列结构。

简述

队列是工程化开发中常用的数据结构。本文主要介绍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())

总结

在很多工程化架构中,队列数据类型是必不可少的。请活学活用。此外,今年TI10中国队又无缘冠军,明年加油吧。

如果本文对你有帮助,请点个赞支持一下吧。

到此这篇关于Python工具类之Queue组件详解用法的文章就介绍到这了,更多相关Python Queue组件内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。