当前位置: 首页 > news >正文

Python queue模块功能大全

queue模块简介

queue模块是Python内置的标准模块,模块实现了三种类型的队列,它们的区别仅仅是条目取回的顺序,分别由3个类进行表示,Queue,LifoQueue,PriorityQueue

queue模块是Python内置的标准模块,可以直接通过import queue引用。在Queue模块中提供了三种同步的、线程安全的队列,分别由三个类Queue,LifoQueue和PriorityQueue表示,它们的唯一区别是元素取出的顺序不同。并且LifoQueue和PriorityQueue都是Queue的子类。

1. Queue(FIFO队列)

Queue类表示一个基本的FIFO(First In First Out)队列,即先进先出。创建方法是Queue.Queue(maxsize=0),其中maxsize是个整数,指明了队列中能存放的数据个数的上限。以下是一个使用Queue的示例。

1

2

3

4

5

6

fromqueueimportQueue

queue_object=Queue()

foriinrange(4):

queue_object.put(i)

whilenotqueue_object.empty():

print(queue_object.get())

上例中将4个数字放在了Queue队列中,然后依次取出它的元素值。它的运行结果如下:

0

1

2

3

2. LifoQueue(LIFO队列)

LifoQueue类表示后进先出队列(Last in First Out),与栈类似,都是后进入的元素先出来。创建方法也很简单,使用Queue.LifoQueue(maxsize=0)即可,其中maxsize的含义与Queue类相同。以下是一个使用LifoQueue的示例:

1

2

3

4

5

6

fromqueueimportLifoQueue

lifo_queue=LifoQueue()

foriinrange(4):

lifo_queue.put(i)

whilenotlifo_queue.empty():

print(lifo_queue.get())

上例同样将4个数字放在了LifoQueue中,但取出元素的顺序与Queue相反,最后放入的元素最先被取出。运行结果如下:

3
2
1
0

3. PriorityQueue(优先级队列)

PriorityQueue类表示优先级队列,按级别顺序取出元素,级别最低的最先取出。优先级队列中的元素一般采取元组(优先级别,数据)的形式来存储。创建方法同样是Queue.PriorityQueue(maxsize=0)。以下是一个使用PriorityQueue的示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

fromqueueimportPriorityQueue

classJob(object):

def__init__(self, level, description):

self.level=level

self.description=description

return

def__lt__(self, other):

returnself.level < other.level

priority_queue=PriorityQueue()

priority_queue.put(Job(5,'中级别工作'))

priority_queue.put(Job(10,'低级别工作'))

priority_queue.put(Job(1,'重要工作'))

whilenotpriority_queue.empty():

next_job=priority_queue.get()

print('开始工作:', next_job.description)

在上例中,将任务Job存入PriorityQueue中,每个Job都有一个优先级level,level值越低则代表的优先级越高。在调用get方法时,按照优先级从高到低的顺序从队列中取出元素。

http://www.jsqmd.com/news/705457/

相关文章:

  • 新手避坑指南:从URDF到MoveIt!Setup Assistant配置机械臂的完整流程
  • 终极QMC音频解密方案:快速免费解锁你的QQ音乐文件 [特殊字符]
  • Linux /tmp 目录管理
  • 【RT-DETR涨点改进】Apple大神2026 |独家创新首发、注意力改进篇| 引入XSA排他自注意力模块,两行代码涨点很猛!含10种创新改进,助力目标检测、图像分割、图像分类、NLP和CV任务涨点
  • SQL视图导出数据速度慢_优化基础查询与增加筛选条件
  • 3步解密多语言语义匹配模型:从1.4GB显存消耗到352MB极致优化的完整实战
  • MCP 2026配置为何让CTO深夜删库重装?血泪复盘3起因配置项顺序错误导致的P0级数据泄露事件(含原始审计日志截图)
  • 告别MOD混乱:用RimSort轻松管理你的环世界模组库
  • 高效QMC音频解密方案:qmc-decoder完整技术指南与跨平台实践
  • 如何利用SQL触发器自动记录数据修改_编写审计日志逻辑
  • Kubernetes监控基石:kube-state-metrics核心原理与生产实践指南
  • Python queue模块的用法
  • 【MCP 2026量子计算适配实战白皮书】:全球首批3大产业落地案例、7类硬件兼容瓶颈与5步迁移 checklist
  • SuperDesign:IDE内AI设计助手,自然语言生成UI与代码
  • 如何快速掌握OpenFace面部行为分析:新手到专家的完整实战指南
  • 抖音视频批量下载器:5分钟解决内容创作者的素材收集难题
  • 2026年OpenClaw/Hermes Agent怎么部署?零技术教程
  • Lombok 注解教程
  • 自然语言驱动GUI测试:AUITestAgent架构解析与工程实践
  • 批量卸载工具Bulk Crap Uninstaller:3分钟彻底清理Windows垃圾软件
  • 移动端UI自动化测试新框架Maestro:声明式语法与实战指南
  • 深度学习噪声训练:提升模型泛化能力的实战指南
  • 3分钟搞定QMC加密音频:你的专属音乐解锁秘籍
  • Python机器学习代码健壮性提升的10个核心技巧
  • 终极Windows安装指南:MediaCreationTool.bat一键突破所有版本限制
  • 【MCP 2026日志异常检测终极指南】:覆盖97.3%未知攻击模式的实时检测框架首次公开
  • neutron详解
  • B站视频下载终极指南:轻松获取4K大会员视频的完整教程
  • UFLDv2车道线检测与车道偏离预警(LDWS)实战
  • 终极教程:3步在Windows上完美使用Switch Joy-Con手柄