如何在 Python 中实现队列的优先级排序?

在 Python 中,可以使用 queue.PriorityQueue 或 heapq 模块来实现优先级队列。

方法 1:使用 queue.PriorityQueue


PriorityQueue 是线程安全的,但在某些情况下可能会有性能开销。使用 PriorityQueue 时,需要将每个元素作为 (优先级, 元素) 形式的元组放入队列中,其中“优先级”是一个数字,值越小表示优先级越高。


import queue


# 创建一个优先级队列

pq = queue.PriorityQueue()


# 放入元素 (优先级, 数据)

pq.put((1, "任务1"))  # 优先级1

pq.put((3, "任务3"))  # 优先级3

pq.put((2, "任务2"))  # 优先级2


# 取出元素(按照优先级从高到低的顺序)

while not pq.empty():

    priority, task = pq.get()

    print(f"优先级: {priority}, 任务: {task}")


方法 2:使用 heapq


heapq 是一个小顶堆,使用它可以实现优先级队列。与 PriorityQueue 类似,每个元素也需要使用 (优先级, 元素) 形式的元组来表示优先级。


import heapq


# 创建一个空列表作为堆

pq = []


# 使用 heappush 添加元素

heapq.heappush(pq, (1, "任务1"))

heapq.heappush(pq, (3, "任务3"))

heapq.heappush(pq, (2, "任务2"))


# 使用 heappop 取出元素(按照优先级从高到低的顺序)

while pq:

    priority, task = heapq.heappop(pq)

    print(f"优先级: {priority}, 任务: {task}")


两种方法的选择


    queue.PriorityQueue:适合多线程环境,因为它是线程安全的。

    heapq:适合单线程环境,速度较快。

请使用浏览器的分享功能分享到微信等