Python 优先级队列PriorityQueue 用法示例
Posted 软件工程小施同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 优先级队列PriorityQueue 用法示例相关的知识,希望对你有一定的参考价值。
优先队列(PriorityQueue)是队列的变体,按优先级顺序(最低优先)检索打开的条目。
条目通常是以下格式的元组:
插入格式:q.put((priority number, data))
特点:默认priority number 越小,优先级越高
其他的操作和队列相同
最常用的成员函数
put() 插入元素
get()取队首元素的值并将其弹出.
full() 判断是否为满.
empty() 判断是否为空.
# -*- coding: utf-8 -*
import queue
# 定义比较的元素对象
class Task(object):
def __init__(self, priority, name):
self.priority = priority
self.name = name
def __str__(self):
return "Task(priority=p, name=n)".format(p=self.priority, n=self.name)
def __lt__(self, other):
""" 定义<比较操作符。"""
# 从大到小排序
return self.priority > other.priority
tsq = queue.PriorityQueue()
# 插入元素
tsq.put_nowait(Task(3, "task1")) # 自定义的类定义了__lt__, 可以比较大小
tsq.put_nowait(Task(1, "task2"))
tsq.put_nowait(Task(2, "task3"))
# 遍历队列
print("取队首元素之前:")
for item in tsq.queue:
print(item)
# 取队首
print("取到队首")
print(tsq.get()) # return: Task(priory=3, name=task1)
# 遍历队列
print("取队首元素之后:")
for item in tsq.queue:
print(item)
print("队列长度:")
print(tsq.qsize())
print("队列是否为空:")
print(tsq.empty())
官方文档:https://docs.python.org/3/library/queue.html
源代码:https://github.com/python/cpython/blob/3.11/Lib/queue.py
以上是关于Python 优先级队列PriorityQueue 用法示例的主要内容,如果未能解决你的问题,请参考以下文章