Python queue模块功能大全

 更新时间:2023年04月20日 09:58:15   作者:让你五行代码  
queue模块是Python内置的标准模块,可以直接通过import queue引用,这篇文章主要介绍了Python queue模块都具有哪些功能,需要的朋友可以参考下

queue模块简介

queue模块是Python内置的标准模块,模块实现了三种类型的队列,它们的区别仅仅是条目取回的顺序,分别由3个类进行表示,Queue,LifoQueue,PriorityQueue

queue模块是Python内置的标准模块,可以直接通过import queue引用。在Queue模块中提供了三种同步的、线程安全的队列,分别由三个类Queue,LifoQueue和PriorityQueue表示,它们的唯一区别是元素取出的顺序不同。并且LifoQueue和PriorityQueue都是Queue的子类。

1. Queue(FIFO队列)

Queue类表示一个基本的FIFO(First In First Out)队列,即先进先出。创建方法是Queue.Queue(maxsize=0),其中maxsize是个整数,指明了队列中能存放的数据个数的上限。以下是一个使用Queue的示例。

from queue import Queue
queue_object = Queue()
for i in range(4):
  queue_object.put(i)
while not queue_object.empty():
  print(queue_object.get())

上例中将4个数字放在了Queue队列中,然后依次取出它的元素值。它的运行结果如下:

0

1

2

3

2. LifoQueue(LIFO队列)

LifoQueue类表示后进先出队列(Last in First Out),与栈类似,都是后进入的元素先出来。创建方法也很简单,使用Queue.LifoQueue(maxsize=0)即可,其中maxsize的含义与Queue类相同。以下是一个使用LifoQueue的示例:

from queue import LifoQueue
lifo_queue = LifoQueue()
for i in range(4):
    lifo_queue.put(i)
while not lifo_queue.empty():
    print(lifo_queue.get())

上例同样将4个数字放在了LifoQueue中,但取出元素的顺序与Queue相反,最后放入的元素最先被取出。运行结果如下:

3
2
1
0

3. PriorityQueue(优先级队列)

PriorityQueue类表示优先级队列,按级别顺序取出元素,级别最低的最先取出。优先级队列中的元素一般采取元组(优先级别,数据)的形式来存储。创建方法同样是Queue.PriorityQueue(maxsize=0)。以下是一个使用PriorityQueue的示例:

from queue import PriorityQueue
class Job(object):
  def __init__(self, level, description):
     self.level = level
     self.description = description
     return
  def __lt__(self, other):
     return self.level < other.level
priority_queue = PriorityQueue()
priority_queue.put(Job(5, '中级别工作'))
priority_queue.put(Job(10, '低级别工作'))
priority_queue.put(Job(1, '重要工作'))
while not priority_queue.empty():
  next_job = priority_queue.get()
  print('开始工作:', next_job.description)

在上例中,将任务Job存入PriorityQueue中,每个Job都有一个优先级level,level值越低则代表的优先级越高。在调用get方法时,按照优先级从高到低的顺序从队列中取出元素。

它的运行结果如下:

开始进行: 重要工作
开始进行: 中级别工作
开始进行: 低级别工作

除此之外,在Queue模块中还定义了2个异常类,如下所示:

·Empty:当从空队列中取数据时,可抛出此异常。

·Full:当向一个满队列中存数据时,可抛出此异常。

到此这篇关于Python queue模块都具有哪些功能?的文章就介绍到这了,更多相关Python queue模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中实现传递未知数量的函数参数

    Python中实现传递未知数量的函数参数

    这篇文章主要介绍了Python中实现传递未知数量的函数参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python各种类型装饰器详细介绍

    Python各种类型装饰器详细介绍

    大家好,本篇文章主要讲的是Python各种类型装饰器详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Python封装adb命令的操作详解

    Python封装adb命令的操作详解

    在日常的 Android 项目开发中,我们通常会使用 adb 命令来获取连接设备的内存、屏幕、CPU等信息,这些信息的获取,每次都在command 中输入相关命令进行重复的操作让人感到厌倦和疲乏,现在,可以尝试使用 python 来简化这一部分工作,所以本文介绍了Python封装adb命令的操作
    2024-01-01
  • python对两个数组进行合并排列处理的两种方法

    python对两个数组进行合并排列处理的两种方法

    最近遇到数组合并问题,以此记录解决方法,供大家参考学习,下面这篇文章主要给大家介绍了关于python对两个数组进行合并排列处理的两种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Python操作xlwings的实例详解

    Python操作xlwings的实例详解

    python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等。本文将通过几个实例演示下xlwings的使用,感兴趣的可以了解一下
    2022-07-07
  • 利用Python如何生成随机密码

    利用Python如何生成随机密码

    这篇文章主要为大家详细介绍了利用Python如何生成随机密码的相关方法,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Python中对URL进行编码的操作

    Python中对URL进行编码的操作

    URL编码是一种将非ASCII字符转换为ASCII字符序列的过程,以便在网络上传输URL时保持它们的有效性和兼容性,在Python中,我们可以使用内置的urllib.parse模块来进行URL编码,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • Python如何使用print()函数输出格式化字符串

    Python如何使用print()函数输出格式化字符串

    Python中内置的%操作符和format函数,都可以用于格式化字符串,下面这篇文章主要给大家介绍了关于Python如何使用print()函数输出格式化字符串的相关资料,需要的朋友可以参考下
    2021-08-08
  • Python ini配置文件示例详解

    Python ini配置文件示例详解

    这篇文章主要给大家介绍了关于Python ini配置文件的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • Python实现生活常识解答机器人

    Python实现生活常识解答机器人

    今天教大家如何用Python爬虫去搭建一个「生活常识解答」机器人.思路:这个机器人主要是依托于“阿里达摩院发布的语言模型PLUG”,通过爬虫的方式,发送post请求(提问),然后返回json数据(回答),需要的朋友可以参考下
    2021-06-06

最新评论