python 工具类之Queue组件详解用法

 更新时间:2021年10月28日 08:47:56   作者:剑客阿良_ALiang  
队列(queue)是一种先进先出的(First In First Out)的线性表,简称FIFO。队列允许在一端进行插入操作,而在另一端进行删除操作。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作

简述

队列一直都是工程化开发中经常使用的数据类型,本篇文章主要介绍一下python queue的使用,会边调试代码,边说明方法内容。

环境

python: 3.6.13

单向队列

初始化单向队列

放置一些数据

可以使用full()方法判断队列是否已经塞满数据,可以通过qsize()方法查看队列内元素数量。

这时候我们从队列取出数据,看先取到的是什么。

现在队列里面只有两个数,我们再塞入3个数看一下。

这个时候我们继续塞入第六个数会怎么样呢?

可以看到如果塞入超过队列限定数量的元素,会阻塞住队列。所以在一般的项目工程中,我们会分成两个线程,一个消费数据,一个塞入队列数据。按照业务需求看是否需要限定队列长度。

先进后出队列

上面展示的是先进先出(FIFO)的单项队列,python的queue模块也提供先进后出(LIFO)的队列: LifoQueue,类似java的栈类型。

塞入数据后看取出的是在队列的什么位置。

可以看出从队列取出的是队尾数据。

优先级队列

按照自定的优先级来对队列数据自动排序:PriorityQueue。

塞入数据后,全部取出,打印看一下顺序是什么样的。

可以看出,书序是按照我们塞入数据的级别由小到大排序的。

双向队列

双向队列,顾名思义就是可以从队列两端进行处理:deque。

初始化,并塞入3个数据。

从左侧,也就是最前端塞入一个元素。看下效果。

可以自定义塞入元素的位置。

取出队尾的数据。

取出队首元素。

完整代码

import queue
 
# 单向队列
q = queue.Queue(5)
print(q.maxsize)
q.put(1)
q.put(2)
q.put(3)
print(q.full())
print(q.qsize())
 
print(q.get())
q.put(4)
q.put(5)
q.put(6)
q.put(7)
print(q.full())
print(q.qsize())
print(q.get())
 
# 先进后出队列
q = queue.LifoQueue(5)
q.put(1)
q.put(2)
q.put(3)
print(q.get())
 
# 优先级队列
q = queue.PriorityQueue(5)
q.put((5, "电"))
q.put((2, "雨"))
q.put((4, "雷"))
q.put((1, "风"))
while True:
    print(q.get())
 
# 双向队列
q = queue.deque()
q.append(1)
q.append(2)
q.append(3)
 
q.appendleft(4)
q.insert(2, 5)
 
print(q.pop())
print(q.popleft())

总结

在很多工程化架构中,队列数据类型是必不可少的。活学活用吧。哎,今年ti10,中国队又无缘冠军,明年加油吧。

如果本文对你有帮助,请点个赞支持一下吧。

到此这篇关于python 工具类之Queue组件详解用法的文章就介绍到这了,更多相关python Queue组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决启动django,浏览器显示“服务器拒绝访问”的问题

    解决启动django,浏览器显示“服务器拒绝访问”的问题

    这篇文章主要介绍了解决启动django,浏览器显示“服务器拒绝访问”的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 五个Python迷你版小程序附代码

    五个Python迷你版小程序附代码

    在使用Python的过程中,我最喜欢的就是Python的各种第三方库,能够完成很多操作。下面就给大家介绍5个通过 Python 构建的实战项目,来实践 Python 编程能力。欢迎收藏学习,喜欢点赞支持
    2021-11-11
  • Pandas实现聚合运算agg()的示例代码

    Pandas实现聚合运算agg()的示例代码

    在数据分析中,分组聚合二者缺一不可。对数据聚合(求和、平均值等)通常是不可避免的。pd.agg()很方便进行聚合操作。本文就来介绍一下,感兴趣的可以了解一下
    2021-07-07
  • 如何用scheduler实现learning-rate学习率动态变化

    如何用scheduler实现learning-rate学习率动态变化

    这篇文章主要介绍了如何用scheduler实现learning-rate学习率动态变化问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python利用pandas分析学生期末成绩实例代码

    python利用pandas分析学生期末成绩实例代码

    pandas是数据分析师最常用的工具之一,这篇文章主要给大家介绍了关于python如何利用pandas分析学生期末成绩的相关资料,文中给出了详细的实现方法,需要的朋友可以参考下
    2021-07-07
  • Flask 数据库集成的介绍

    Flask 数据库集成的介绍

    这篇文章主要给大家分享了Flask 数据库集成的介绍,数据库是大多数 Web 应用的基础设施,只要想把数据存储下来,就离不开数据库,下面将一起学习一下如何给 Flask 应用添加数据库支持。下面详细内容,需要的朋友可以参考一下
    2021-11-11
  • Python处理字符串之isspace()方法的使用

    Python处理字符串之isspace()方法的使用

    这篇文章主要介绍了Python处理字符串之isspace()方法的使用,是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • python十进制和二进制的转换方法(含浮点数)

    python十进制和二进制的转换方法(含浮点数)

    这篇文章主要介绍了python十进制和二进制的转换方法(含浮点数),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • tkinter自定义下拉多选框问题

    tkinter自定义下拉多选框问题

    这篇文章主要介绍了tkinter自定义下拉多选框问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Python 中字符串修饰符详解

    Python 中字符串修饰符详解

    这篇文章主要介绍了Python中字符串修饰符的相关知识,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-06-06

最新评论