python优先级队列-python 优先级队列
简介
优先级队列是基于堆的,关于堆的时候可以参考文章堆,优先级队列就是入队时,会分配一个优先级,之后出队时,根据优先级出列。如,入队时:(4,"a"), (6,"r"), (3"d"),则出队顺序(6,"r"), (4,"a"),(3"d")。
优先级队列的python实现
class PriorityQueue(object):
def __init__(self, maxsize):
self.maxsize = maxsize
self._maxheap = MaxHeap(maxsize)
def push(self, priority, value):
# 注意这里把这个 tuple push 进去,python 比较 tuple 从第一个开始比较
# 这样就很巧妙地实现了按照优先级排序
entry = (priority, value) # 入队的时候会根据 priority 维持堆的特性
self._maxheap.add(entry)
def pop(self, with_priority=False):
entry = self._maxheap.extract()
if with_priority:
return entry
else:
return entry[1]
def is_empty(self):
return len(self._maxheap) == 0
def test_priority_queue():
size = 5
pq = PriorityQueue(size)
pq.push(5, "purple") # priority, value
pq.push(0, "white")
pq.push(3, "orange")
pq.push(1, "black")
res = []
while not pq.is_empty():
res.append(pq.pop())
assert res == ["purple", "orange", "black", "white"]
test_priority_queue()
其中MaxHeap类是这节中堆实现过的
其实是根据堆的特性比较元组中第一个数字也就是优先级的大小。
python优先级队列-python 优先级队列相关推荐
- 优先级队列 Python
文章目录 环境 文章介绍 一.queue (线程安全) 3种不同的队列 1. Queue, 先进先出队列(FIFO) 2.LifoQueue(派生自Queue), 先进后出队列(LIFO) 3.Pri ...
- [转载] python中 堆heapq以及 队列queue的使用
参考链接: Python中的堆队列(Heap queue或heapq) python中 堆heapq以及 队列queue的使用 1. 堆heapq的使用 ## -------------------- ...
- python 3.0 实现多级反馈队列进程调度算法
文章目录 前言 一.操作系统课程设计任务 二.具体实现 1.多级反馈定义 2.代码 前言 写的很拉,但是可以实现多级反馈调度的python3.0代码 算法参考:「土豆洋芋山药蛋」作者的文章 参考文章的 ...
- 数据结构Python版(四)——队列
目录 一.队列简介 二.顺序队列 2.1 非循环队列 2.2 循环队列 2.2.1 假溢出 2.2.2 循环队列的架构 2.2.3 循环队列的实现 三.链队 3.1 链队的完整实现 四.双端队列 4. ...
- rq 消息队列(python)
0.简介 RQ (Redis Queue)是一个简单的Python库,用于队列任务并在后台与工人(worker)一起处理它们.它由Redis提供支持,旨在降低入门门槛.它可以轻松集成到您的Web堆栈中 ...
- python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)
今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...
- 优先级队列 c语言,队列优先级
优先级队列比队列更专业的数据结构.像普通队列,优先级队列中有相同的方法,但在使用上是有比较大的区别的.在优先级队列数据项都受到键值排序,以便与最低键的值,数据项在前方,键的最高值的数据项在后方,反之亦 ...
- python中栈的描述是_数据结构与算法:Python语言描述 栈和队列.ppt
数据结构与算法:Python语言描述 栈和队列 迷宫问题 迷宫问题的特点: 存在一集可能位置,一些位置相互连通,一步可达 一个位置可能连通若干位置,出现向前探查的多种可能(有分支) 目标是找到一条路径 ...
- 第二百九十二节,RabbitMQ多设备消息队列-Python开发
RabbitMQ多设备消息队列-Python开发 首先安装Python开发连接RabbitMQ的API,pika模块 pika模块为第三方模块 对于RabbitMQ来说,生产和消费不再针对内存里的一 ...
- 2.2.5 操作系统之调度算法(时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法)
文章目录 0.思维导图 1.时间片轮转---RR 2.优先级调度算法 3.多级反馈队列调度算法 4.三种算法的对比总结 0.思维导图 1.时间片轮转-RR Round-Robin 时间片为2举例 以时 ...
最新文章
- 探秘新一代音视频技术融合通信平台全接触
- 静态html页面传递参数,javascript静态页面传值的三种方法分享
- 大厂,常用,四款,大屏可视化工具
- 【Python】GUI编程(Tkinter)教程
- 为啥Redis/Mongo这么快,就不能直接替代mysql吗?
- 一起等补丁:操作系统漏洞StrandHogg 2.0几乎影响所有安卓设备
- 0/1背包——动态规划
- 计算机维修工具大全,电脑硬件维修测试工具大全(附送各类PC检修资源)
- ie 谷歌插件Chrome Frame
- linux 下修改文件夹的用户权限和所属组,为文件建立软连接
- 华创e路航固件_华创e路航地图
- qtdesigner设计表格_Qt表格视图-简单表格
- 时间换算 将毫秒换算成时间
- 需要查询前一次该厂商,料号的单价, 这个sql语句很难写,你碰到过没有
- 三星s8 android版本,三星S8系列国行获安卓8.0更新 用户泪奔
- 关于YouTub视频广告格式
- cmd查看python库命令_怎么用命令查看python的库
- 非线性函数线性化方法总结
- 关于taz文件解压成tar文件这件事(根源在于7-Zip)
- ue4蓝图和ai的区别_UE4 AI教程
热门文章
- java程序包condition不存在,Ant javac:包x不存在,但我将x.jar添加到java构...
- hsql mybatis 表不存在_Mybatis-plus 查询数据库表时抛异常提示数据库表不存在
- kali 如何使用word_如何学习并玩好kali?
- wordprss只显示一个当前主题 问题的解决
- 为什么选择springcloud作为微服务架构
- 安卓和php开发融云聊天室,聊天室
- weblogic12C安装
- python 安装虚拟环境
- Ubunt_配置_tftp(文件传输)
- LY.JAVA.DAY12.Scanner