python 工具类之Queue组件详解用法
作者:剑客阿良_ALiang 发布时间:2023-08-05 23:59:10
标签:python,Queue组件,工具类
简述
队列一直都是工程化开发中经常使用的数据类型,本篇文章主要介绍一下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())
来源:https://huyi-aliang.blog.csdn.net/article/details/120827420


猜你喜欢
- xlsxwriter可能用过的人并不是很多,不过使用后就会感觉,他的功能让你叹服,除了可以按要求生成你所需要的excel外还可以加上很形象的
- opencv中内置了张正友的棋盘格标定法,通过一些姿态各异的棋盘格图像,就能标定相机的内外参数。角点检测第一步是角点检测,首先需要读取棋盘格
- 1,目标环境Windows 7 64位2,材料(1)VC++2010 发布包(64位)(2)MySQL 5.6.36 Windows x64
- 前言在Django的前后端分离项目中DRF(Django Restframe Work)框架无疑是首选,关于token验证一般使用的是JWT
- mysql中的自增auto_increment功能相信每位phper都用过,也都知道如何设置字段为自增字段,但并不是所有phper都知道au
- itertools — 为高效循环而创建迭代器的函数accumulate(iterable: Iterable, fun
- 一. 网页挂马的概念: 网页挂马是指:在获取网站或者网站服务器的部分或者全部权限后,在网
- 作者:bencalie 整理日期:2004年6月15日<xml id="users"> <u
- Redis是一款依据BSD开源协议发行的高性能Key-Value存储系统。会把数据读入内存中提高存取效率。Redis性能极高能支持超过100
- 前言9月份,开始开发微信小程序,也曾调研过wepy/mpvue,考虑到后期跨端的需求,最终选择使用了uni-app,本文主要介绍如何使用un
- 经常会看到这种弹出层背景变暗的效果,感觉手痒于是自己写了一个基于jquery的弹出层类。我习惯先写好结构和样式,然后再写js交互效果。结构定
- 最近关心电子商务比较多,阿里系产品目前还是业内标杆,值得学习的对象。前几天Jack Ma对支付宝用户体验的严厉批评,成为业内交流热点,据说原
- 1. viper的介绍viper是go一个强大的流行的配置解决方案的库。viper是spf13的另外一个重量级库。有大量项目都使用该库,比如
- 文件名: VS7.1sp1-KB918007-X86.exe版本: &n
- #-*- encoding: utf-8 -*-'''Created on 2014-4-24@author: Le
- 如何用拦截表单的方法上传图片? 看下列代码:<script language="
- 如下所示:# -*-coding:utf-8 -*-def do_telnet(Host, username, password, fini
- Python的可视化工具有很多,数不胜数,各有优劣。本文就对其中的pylab进行介绍。之所以介绍这一款,是因为它和Matlab的强烈相似度,
- 作者:Dmitry @ Usability Post 版权所有 Copyright.译者:明月星光 @ UCD翻译小组原文:ht
- 快速搭建scrapy开发环境pythonpippip百度网盘注:不同的电脑上所带有环境不同,安装方式有些许差别1、成功安装python并添加