Python中举一个简单的threading.PriorityQueue的例子并模拟其输出
时间: 2024-12-26 14:30:43 浏览: 11
在Python中,`queue`模块中的`PriorityQueue`是一个可以按照优先级顺序处理任务的队列。它实现了FIFO(先进先出)策略,但是元素会被按照它们的键插入,然后按顺序弹出。
下面是一个简单的例子:
```python
import queue
from threading import Thread
# 定义一个任务类,包含优先级值
class Task:
def __init__(self, priority, task_name):
self.priority = priority
self.task_name = task_name
# 创建一个优先级队列
priority_queue = queue.PriorityQueue()
# 添加几个任务到队列
tasks = [
Task(5, 'Task A'),
Task(1, 'Task B'),
Task(3, 'Task C')
]
for task in tasks:
priority_queue.put(task)
# 定义一个处理任务的函数
def process_task():
while True:
if not priority_queue.empty():
# 弹出优先级最高的任务
task = priority_queue.get()
print(f"Processing {task.task_name} with priority {task.priority}")
else:
break
# 创建线程处理队列
worker_thread = Thread(target=process_task)
worker_thread.start()
# 等待所有任务完成
worker_thread.join()
阅读全文