Python模拟实现优先级消息队列
Python模拟实现优先级消息队列
本篇文章将介绍如何使用Python的PriorityQueue类模拟实现一个简单的优先级消息队列。
问题描述
消息队列是操作系统中一种常见的进程间通信方式。每个进程都有一个消息队列,用于存储系统或其他进程发送的消息。消息队列中的消息按照优先级排序,优先级高的消息会被优先处理。
我们需要编写一个程序,模拟消息队列的基本功能:
- PUT: 将消息添加到队列中,并指定其优先级。
- GET: 从队列中取出优先级最高的消息。
代码实现
import queue
N = int(input())
q = queue.PriorityQueue()
for _ in range(N):
cmd = input().split()
if cmd[0] == 'PUT':
msg = cmd[1]
priority = int(cmd[2])
q.put((priority, msg)) # 将优先级和消息作为元组添加到队列中
elif cmd[0] == 'GET':
if q.empty():
print('EMPTY QUEUE!')
else:
priority, msg = q.get() # 获取优先级最高的消息
print(msg)
代码解释
- 首先,我们导入
queue模块,该模块提供了PriorityQueue类。 - 创建一个
PriorityQueue对象q,用于存储消息。 - 读取输入的指令数量
N。 - 循环
N次,每次读取一条指令:- 如果指令是'PUT',则读取消息名称和优先级,并将它们作为一个元组
(priority, msg)添加到队列q中。 - 如果指令是'GET',则检查队列是否为空。如果为空,则输出'EMPTY QUEUE!';否则,调用
q.get()方法获取优先级最高的消息,并输出消息名称。
- 如果指令是'PUT',则读取消息名称和优先级,并将它们作为一个元组
输入输出示例
输入样例:
6
PUT mouse_click 3
PUT text_change 1
GET
GET
PUT button_click 2
GET
输出样例:
text_change
button_click
mouse_click
总结
本文介绍了如何使用Python的PriorityQueue类模拟实现一个简单的优先级消息队列。PriorityQueue类提供了一种方便的方式来维护一个按优先级排序的队列,可以方便地进行消息的添加和获取操作。
原文地址: https://www.cveoy.top/t/topic/bmo6 著作权归作者所有。请勿转载和采集!