python 优先队列_Python 优先队列

Python 优先队列,优先队列是一个容器数据结构,使用具有全序关系的键(例如用数值表示的权重)来管理元素,以便快速访问容器中键值最小或最大的元素。

优先队列可被视为队列的改进版,其中元素的顺序不是基于插入时间,而是基于优先级的。对键进行处理能得到每个元素的优先级。

优先级队列通常用于处理调度问题,例如优先考虑更加紧急的任务。

来看看操作系统任务调度器的工作。

理想情况下,系统上的高优先级任务(如玩实时游戏)级别应高于低优先级的任务(如在后台下载更新)。优先级队列将待执行的任务根据紧急程度排列,任务调度程序能够快速选取并优先执行优先级最高的任务。

本节将介绍如何使用Python语言内置或位于标准库中的数据结构来实现优先队列。每种实现都有各自的优缺点,但其中有一种实现能应对大多数常见情况,下面一起来看看。

Python 优先队列 列表——手动维护有序队列

使用有序列表能够快速识别并删除最小或最大的元素,缺点是向列表插入元素表是很慢的

操作。

虽然用标准库中的bisect.insort能在

时间内找到插入位置,但缓慢的插入操作才是瓶颈。

向列表添加并重新排序来维持顺序也至少需要

的时间。另一个缺点是在插入新元素时,必须手动重新排列列表。缺少这一步就很容易引入bug,因此担子总是压在开发人员身上。

因此,有序列表只适合在插入次数很少的情况下充当优先队列。

Python 优先队列 heapq——基于列表的二叉堆

heapq

你可能感兴趣的:(python,优先队列)