PriorityQueue队列的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PriorityQueue队列的使用相关的知识,希望对你有一定的参考价值。

参考技术A 典型的生产消费者模型都存在队列的概念,在python语言中,提供了queue标准库,该库包含了Queue、FIFO和PriorityQueue三种类型的队列。

优先级处理的对列使用PriorityQueue,使用方法和Queue类似,区别在于放入队列的数据会进行排序,优先级高的数据会优先取出。

其中,priority为优先级字段,类型为int,数字越小,优先级越高;item为数据字段,可为任意类型。

put数据为数据类构造。

输出结果为:

从结果可以看到优先级为0的数据最先取出。

Python 线程优先队列 PriorityQueue

目录

零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

在  线程队列 Queue / 线程队列 LifoQueue  文章中分别介绍了先进先出队列 Queue 和先进后出队列 LifoQueue ,而今天给大家介绍的是最后一种:优先队列 PriorityQueue ,对队列中的数据按照优先级排序,那么具体怎么用呢?

一.Python 线程队列 Queue 分类

  • 1.线程队列 Queue — FIFO(先进先出队列),即哪个数据先存入,取数据的时候先取哪个数据,同生活中的排队买东西;
  • 2.线程队列 LifoQueue — LIFO(先进后出队列),即哪个数据最后存入的,取数据的时候先取,同生活中手枪的弹夹,子弹最后放入的先打出;
  • 3.线程队列 PriorityQueue — PriorityQueue(优先级队列),即存入数据时候加入一个优先级,取数据的时候优先级最高的取出;

二.Python 线程优先队列 PriorityQueue 简介

在数据存入的时候设置优先级,取数据的时候默认按照优先级最高的取出,注意:使用优先级存数据取数据,队列中的数据必须是同一类型,举个栗子:班级成绩排名/身高排名……

值得注意的是:在将数据存入到优先队列 PriorityQueue 时,设置的值越小,优先级越高;

三.Python 线程优先队列 PriorityQueue 函数介绍

函数不做过多介绍了,已经在  线程队列 Queue  有了详细讲解,两者都属于 Queue ,函数都一样!

四.Python 线程优先队列 PriorityQueue 使用

按优先级:不管是数字、字母、列表 list元组 tuple 等(字典 dict集合 set 没测),使用优先级存数据取数据,队列中的数据必须是同一类型,都是按照实际数据的 ascii 码表的顺序进行优先级匹配,汉字是按照 unicode 表。

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 线程优先队列 PriorityQueue.py
@Time:2021/05/05 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

import queue
import threading
import time

q = queue.PriorityQueue()
q.put([1, \'ace\'])
q.put([40, 333])
q.put([3, \'afd\'])
q.put([5, \'4asdg\'])
# 1是级别最高的,
while not q.empty():  # 不为空时候执行
    print(q.get())



q = queue.PriorityQueue()
q.put(\'我\')
q.put(\'你\')
q.put(\'他\')
q.put(\'她\')
q.put(\'ta\')
while not q.empty():
    print(q.get())


\'\'\'
输出结果:

[1, \'ace\']
[3, \'afd\']
[5, \'4asdg\']
[40, 333]
ta
他
你
她
我
\'\'\'

**     由此可见:在将数据存入到优先队列 PriorityQueue 时,设置的值越小,优先级越高!**

五.猜你喜欢

  1. Python 条件推导式
  2. Python 列表推导式
  3. Python 字典推导式
  4. Python 函数声明和调用
  5. Python 不定长参数 *argc/**kargcs
  6. Python 匿名函数 lambda
  7. Python return 逻辑判断表达式
  8. Python 字符串/列表/元组/字典之间的相互转换
  9. Python 局部变量和全局变量
  10. Python type 函数和 isinstance 函数区别
  11. Python is 和 == 区别
  12. Python 可变数据类型和不可变数据类型
  13. Python 浅拷贝和深拷贝
  14. Python 文件读写操作
  15. Python 异常处理
  16. Python 模块 import
  17. Python __name__ == ‘__main__’详细解释
  18. Python 线程创建和传参
  19. Python 线程互斥锁 Lock
  20. Python 线程时间 Event
  21. Python 线程条件变量 Condition
  22. Python 线程定时器 Timer
  23. Python 线程信号量 Semaphore
  24. Python 线程障碍对象 Barrier
  25. Python 线程队列 Queue – FIFO
  26. Python 线程队列 LifoQueue – LIFO
  27. Python 线程优先队列 PriorityQueue

未经允许不得转载:猿说编程 » Python 线程优先队列 PriorityQueue

本文由博客 - 猿说编程 猿说编程 发布!

以上是关于PriorityQueue队列的使用的主要内容,如果未能解决你的问题,请参考以下文章

PriorityQueue队列的使用

Python 线程优先队列 PriorityQueue

Java 集合框架PriorityQueue 优先级队列的使用

Java 集合框架PriorityQueue 优先级队列的使用

Java 优先队列(PriorityQueue)总结

java PriorityQueue优先级队列使用