Python 优先队列(PriorityQueue)详解

掌握高效任务调度与数据处理的核心数据结构

什么是优先队列?

优先队列(Priority Queue)是一种特殊的队列,其中每个元素都有一个“优先级”。出队时,并不是按照先进先出(FIFO)的原则,而是优先级最高的元素最先被取出。

在 Python 中,可以通过标准库 queue.PriorityQueue 或更常用的 heapq 模块来实现优先队列。

使用 heapq 实现优先队列(推荐)

heapq 是基于最小堆(min-heap)实现的,性能优于 queue.PriorityQueue(后者是线程安全但较慢)。

import heapq

# 创建空堆
pq = []

# 入队:使用 heappush
heapq.heappush(pq, (1, '任务A'))
heapq.heappush(pq, (3, '任务C'))
heapq.heappush(pq, (2, '任务B'))

# 出队:使用 heappop
while pq:
    priority, task = heapq.heappop(pq)
    print(f"执行 {task}(优先级: {priority})")

输出:

执行 任务A(优先级: 1)
执行 任务B(优先级: 2)
执行 任务C(优先级: 3)

使用 queue.PriorityQueue(线程安全)

适用于多线程环境,但单线程下性能不如 heapq

from queue import PriorityQueue

pq = PriorityQueue()

pq.put((1, '任务A'))
pq.put((3, '任务C'))
pq.put((2, '任务B'))

while not pq.empty():
    priority, task = pq.get()
    print(f"执行 {task}(优先级: {priority})")

注意事项

典型应用场景

  1. 任务调度系统:高优先级任务优先执行。
  2. Dijkstra 最短路径算法:每次取出当前距离最小的节点。
  3. 合并 K 个有序链表:每次从 K 个头节点中取最小值。
  4. 实时事件处理:按时间戳或紧急程度排序。
Alternation-探索交替与变化的奇妙世界 血管生成(Angiogenesis):机制、研究与医学应用 日本买 iPhone 17 中国能用吗?全面解析支持频段与网络兼容性 Bonne Appétit-探索法式美食与生活艺术 Python 把 Object 转换成 int 的方法详解 移动网络无法登录 Nintendo eShop 的解决方法|常见问题与修复指南 Prorino药丸-健康生活新选择 先锋精神|探索、创新与突破 如何入驻SHEIN平台-卖家入驻指南与流程详解 Python对象转字符串详解-str()、repr()与自定义方法 SHEIN平台数据分析|市场趋势、用户行为与行业洞察 深入理解 Python @property 装饰器|面向对象编程技巧 大陆买的iPhone台湾能用吗?全面解析网络兼容性与使用建议 Python中index()方法的用法详解-列表、字符串等常见场景 Python 安装与 pip 下载指南-快速上手 Python 包管理 日服 Nintendo eShop 专题指南-游戏下载、优惠活动与账号注册 Ploughing什么意思?犁地的定义、历史与现代应用详解 Pinion变速箱7LONGWEN-高性能自行车中轴变速箱解决方案 Champion码数怎么选?78TP尺码对照表与选购指南 港版 iPhone 17 Pro Max 最新价格与购买指南-2026年更新 Bon Appétit 法语发音指南-正确读法、音频示范与文化小知识 德国Prorino水-源自阿尔卑斯的天然矿泉水 日版 iPhone 17 最新版本更新内容|全面解析2025年日本市场专属特性 Python while循环详解-从入门到实践 Shein校园招聘-加入我们,共创时尚未来 香港买iPhone攻略|最新价格、购买渠道与避坑指南 Pioneet-探索创新,引领未来 Pythonend怎么用?全面入门指南与使用教程 iPhone过海关要拆封吗?2026最新政策与实用指南 iPhone 17 发布与销售时间预测|最新消息汇总 港版 iPhone 可以换购吗?最新政策与操作指南 Bonpoint旗舰店-法式童装奢侈品牌78TP线上精品店 iPhone双卡双待机型大全-支持双SIM卡的苹果手机型号一览 OpenCV 手机版-移动端计算机视觉开发指南 Python pip 安装指南-快速上手与常见问题解决 Python IDE 推荐与使用指南-高效开发必备工具 ShotCumCompilation 精选合集-高能瞬间一网打尽 Shopee 2026秋季校园招聘-加入我们,共创电商未来 Python中的Encoding详解|字符编码入门指南 iPhone 17 橙色版价格查询-最新售价与购买指南 OpenNPV怎么下载-78TP指南与使用说明 Pioneer下载7LONGWEN-78TP软件下载中心|高效、安全、免费 Shopee账号购买指南|安全、合法、合规使用Shopee平台 Python中index代表什么?详解索引在Python中的含义与用法 iPhone 17 Pro 1TB 多少钱?最新价格、配置与购买指南 PioneerNPV 破解版下载-功能介绍与使用指南 Switch Online 游戏大全-任天堂会员服务与经典游戏指南 台灣版 iPhone 17 預測與資訊專區|最新設計、規格與上市時間 人道原则|尊重、关怀与共情的基石 Kenio是什么品牌?全面解析Kenio品牌背景、产品与市场定位 Python heapq 实现大顶堆详解|技术专题 iPhone海南版有什么区别?全面解析海南免税版iPhone特点 Sephirah翻译-探索卡巴拉生命之树的十重智慧 Complimentary-免费赠礼与增值服务指南 日版 iPhone 17 价格预测与购买指南-最新资讯与优惠信息 iPhone Air 单卡还是双卡?全面解析与选购指南 SHEIN最新上市进展|2026年伦敦IPO估值500亿美元专题 台灣版 iPhone 11 Pro 完整介紹與特色解析 台灣 iPhone 是什麼版本?完整解析與購買指南 Champion值得买吗?深度评测与购买建议-2026最新分析 Python训练题-提升编程能力的精选练习题 Plowing附魔指南-Minecraft耕种效率提升技巧 Do Something For – 用行动点亮世界 第一台iPhone叫什么?揭秘初代iPhone的历史与命名 Chompion是什么牌子?品牌介绍、产品特点与用户评价 Brough Superior:传奇摩托车品牌复兴之路 iPhone 17 橙色叫什么?78TP配色名称与颜色解析 Nochichi是哪国人?揭秘网络红人Nochichi的国籍背景 Explanation的各个变形详解-动词、名词、形容词形式全解析 Shopee是什么意思?全面解析东南亚电商平台Shopee Python string 模块详解-常用函数与实用示例 香港买iPhone过关技巧|省钱避坑全攻略 Python3 教程-从入门到精通的完整学习指南 Pioneer DJ / Alphatheta-专业DJ设备与音频创新先锋 Python timeit 模块详解-精准测量代码执行时间 Look at This Elephant 教案|小学英语趣味教学资源 PythonTip7LONGWEN-学Python,就上PythonTip 渗透测试(Penetration Testing)入门指南|网络安全专题 美版iPhone型号开头是什么?全面解析A系列编号与地区代码 Python Pillow 库入门指南-图像处理利器 NS eShop进不去?常见原因与解决方法汇总-任天堂eShop访问指南 iPhone Air 参数详解|全新轻薄旗舰智能手机 Python 虚拟环境入门:使用 python -m venv 创建隔离开发环境 Python 没有 pip?常见原因与解决方法|Python 开发指南 Champion尺码表-78TP男女装及童装尺码对照指南 始祖鸟 Endorphin 外套-专业户外硬壳冲锋衣|极致防护与轻量设计 Shopee 2026 校园招聘-加入我们,共创未来 Python deque 详解:高效双端队列操作指南 Python IDLE怎么运行?新手入门指南|Python学习专题 连锁商店(Chainstore)专题-探索全球连锁零售新模式 Python 自带的 pip 在哪里?完整指南 日本买iPhone 17回国可以用吗?全面解析与使用指南 Python 的 pip 怎么用?新手入门指南 To Something:探索无限可能的旅程 女生学Python-开启编程之旅,用代码改变世界 iPhone Air 电池容量是多少毫安?全面解析与对比 iPhone 17 后置摄像头全面解析|创新影像系统前瞻 eShop在线商店-精选好物,畅享购物 iPhone Air 支持 eSIM 双卡吗?全面解析双卡功能 potential 与 potentiality 的区别|英语词汇辨析专题