简介

优先级队列是基于堆的,关于堆的时候可以参考文章堆,优先级队列就是入队时,会分配一个优先级,之后出队时,根据优先级出列。如,入队时:(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 优先级队列相关推荐

  1. 优先级队列 Python

    文章目录 环境 文章介绍 一.queue (线程安全) 3种不同的队列 1. Queue, 先进先出队列(FIFO) 2.LifoQueue(派生自Queue), 先进后出队列(LIFO) 3.Pri ...

  2. [转载] python中 堆heapq以及 队列queue的使用

    参考链接: Python中的堆队列(Heap queue或heapq) python中 堆heapq以及 队列queue的使用 1. 堆heapq的使用 ## -------------------- ...

  3. python 3.0 实现多级反馈队列进程调度算法

    文章目录 前言 一.操作系统课程设计任务 二.具体实现 1.多级反馈定义 2.代码 前言 写的很拉,但是可以实现多级反馈调度的python3.0代码 算法参考:「土豆洋芋山药蛋」作者的文章 参考文章的 ...

  4. 数据结构Python版(四)——队列

    目录 一.队列简介 二.顺序队列 2.1 非循环队列 2.2 循环队列 2.2.1 假溢出 2.2.2 循环队列的架构 2.2.3 循环队列的实现 三.链队 3.1 链队的完整实现 四.双端队列 4. ...

  5. rq 消息队列(python)

    0.简介 RQ (Redis Queue)是一个简单的Python库,用于队列任务并在后台与工人(worker)一起处理它们.它由Redis提供支持,旨在降低入门门槛.它可以轻松集成到您的Web堆栈中 ...

  6. python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)

    今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...

  7. 优先级队列 c语言,队列优先级

    优先级队列比队列更专业的数据结构.像普通队列,优先级队列中有相同的方法,但在使用上是有比较大的区别的.在优先级队列数据项都受到键值排序,以便与最低键的值,数据项在前方,键的最高值的数据项在后方,反之亦 ...

  8. python中栈的描述是_数据结构与算法:Python语言描述 栈和队列.ppt

    数据结构与算法:Python语言描述 栈和队列 迷宫问题 迷宫问题的特点: 存在一集可能位置,一些位置相互连通,一步可达 一个位置可能连通若干位置,出现向前探查的多种可能(有分支) 目标是找到一条路径 ...

  9. 第二百九十二节,RabbitMQ多设备消息队列-Python开发

    RabbitMQ多设备消息队列-Python开发 首先安装Python开发连接RabbitMQ的API,pika模块 pika模块为第三方模块  对于RabbitMQ来说,生产和消费不再针对内存里的一 ...

  10. 2.2.5 操作系统之调度算法(时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法)

    文章目录 0.思维导图 1.时间片轮转---RR 2.优先级调度算法 3.多级反馈队列调度算法 4.三种算法的对比总结 0.思维导图 1.时间片轮转-RR Round-Robin 时间片为2举例 以时 ...

最新文章

  1. 探秘新一代音视频技术融合通信平台全接触
  2. 静态html页面传递参数,javascript静态页面传值的三种方法分享
  3. 大厂,常用,四款,大屏可视化工具
  4. 【Python】GUI编程(Tkinter)教程
  5. 为啥Redis/Mongo这么快,就不能直接替代mysql吗?
  6. 一起等补丁:操作系统漏洞StrandHogg 2.0几乎影响所有安卓设备
  7. 0/1背包——动态规划
  8. 计算机维修工具大全,电脑硬件维修测试工具大全(附送各类PC检修资源)
  9. ie 谷歌插件Chrome Frame
  10. linux 下修改文件夹的用户权限和所属组,为文件建立软连接
  11. 华创e路航固件_华创e路航地图
  12. qtdesigner设计表格_Qt表格视图-简单表格
  13. 时间换算 将毫秒换算成时间
  14. 需要查询前一次该厂商,料号的单价, 这个sql语句很难写,你碰到过没有
  15. 三星s8 android版本,三星S8系列国行获安卓8.0更新 用户泪奔
  16. 关于YouTub视频广告格式
  17. cmd查看python库命令_怎么用命令查看python的库
  18. 非线性函数线性化方法总结
  19. 关于taz文件解压成tar文件这件事(根源在于7-Zip)
  20. ue4蓝图和ai的区别_UE4 AI教程

热门文章

  1. java程序包condition不存在,Ant javac:包x不存在,但我将x.jar添加到java构...
  2. hsql mybatis 表不存在_Mybatis-plus 查询数据库表时抛异常提示数据库表不存在
  3. kali 如何使用word_如何学习并玩好kali?
  4. wordprss只显示一个当前主题 问题的解决
  5. 为什么选择springcloud作为微服务架构
  6. 安卓和php开发融云聊天室,聊天室
  7. weblogic12C安装
  8. python 安装虚拟环境
  9. Ubunt_配置_tftp(文件传输)
  10. LY.JAVA.DAY12.Scanner