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())

总结

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

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

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

(0)

相关推荐

  • Python高级编程之消息队列(Queue)与进程池(Pool)实例详解

    本文实例讲述了Python高级编程之消息队列(Queue)与进程池(Pool).分享给大家供大家参考,具体如下: Queue消息队列 1.创建 import multiprocessing queue = multiprocessing.Queue(队列长度) 2.方法 方法 描述 put 变量名.put(数据),放入数据(如队列已满,则程序进入阻塞状态,等待队列取出后再放入) put_nowait 变量名.put_nowati(数据),放入数据(如队列已满,则不等待队列信息取出后再放入,直接报

  • Python数据结构之优先级队列queue用法详解

    一.基本用法 Queue类实现了一个基本的先进先出容器.使用put()将元素增加到这个序列的一端,使用get()从另一端删除.具体代码如下所示: import queue q = queue.Queue() for i in range(1, 10): q.put(i) while not q.empty(): print(q.get(), end=" ") 运行之后,效果如下: 这里我们依次添加1到10到队列中,因为先进先出,所以出来的顺序也与添加的顺序相同. 二.LIFO队列 既然

  • Python多线程 Queue 模块常见用法

    queue介绍 queue是python中的标准库,俗称队列,可以直接import 引用,在python2.x中,模块名为Queue 在python中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够保证数据的安全性和一致性,所以当多个线程需要进行数据交换的时候,队列就出现了,队列可以完美解决线程间的数据交换,保证线程间数据的安全性和一致性 Python 的 Queue 模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQ

  • python进程间通信Queue工作过程详解

    Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信. 1. Queue的使用 可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序,首先用一个小实例来演示一下Queue的工作原理: import multiprocessing q = multiprocessing.Queue(3) # 初始化的Queue对象,最多能put三条消息 q.put("消息1") q.put("消息2")

  • 详解python数据结构之队列Queue

    一.前言 队列Queue是一种先进先出(FIFO,First In First Out)的线性表.允许一端进行插入(rear),对应的另一段进行删除(front). 本篇包含以下内容: (1)Queue的基本格式 (2)入队列en_queue (3)删除数据函数 de_queue 二.Queue的基本格式 class Queue(): def __init__(self,size): self.size = size self.front = -1 #设置front初始值,每出队列一个数据就加

  • python3爬虫中引用Queue的实例讲解

    我们去一个受欢迎的地方买东西,难免会需要排队等待.如果有多个窗口的话,就会有不同队列的产生,当然每个队伍的人数也会出现参差不齐的现象.我们今天所要说的Queue就可以理解成生活中的排队现象.那么结合我们所要用的爬虫知识,应该怎么在Queue中应用呢?接下来就开始今天的内容学习: 队列这种东西大家应该都知道,就是一个先进先出的数据结构,而Python的标准库中提供了一个线程安全的队列,也就是说该模块是适用于多线程编程的先进先出(first-in,first-out,FIFO)数据结构,可以用来在生

  • Python多线程通信queue队列用法实例分析

    本文实例讲述了Python多线程通信queue队列用法.分享给大家供大家参考,具体如下: queue: 什么是队列:是一种特殊的结构,类似于列表.不过就像排队一样,队列中的元素一旦取出,那么就会从队列中删除. 线程之间的通信可以使用队列queue来进行 线程如何使用queue.Queue[还有其他类型的对象下面讲]来通信: 1.创建一个Queue对象:对象=queue.Queue(x),x是队列容量,x可以不填,默认没有容量限制, 2.get()可以使线程从队列中获取一个元素,如果队列为空,ge

  • python中threading和queue库实现多线程编程

    摘要 本文主要介绍了利用python的 threading和queue库实现多线程编程,并封装为一个类,方便读者嵌入自己的业务逻辑.最后以机器学习的一个超参数选择为例进行演示. 多线程实现逻辑封装 实例化该类后,在.object_func函数中加入自己的业务逻辑,再调用.run方法即可. # -*- coding: utf-8 -*- # @Time : 2021/2/4 14:36 # @Author : CyrusMay WJ # @FileName: run.py # @Software:

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

    目录 简述 环境 单向队列 先进后出队列 优先级队列 双向队列 完整代码 总结 简述 队列一直都是工程化开发中经常使用的数据类型,本篇文章主要介绍一下python queue的使用,会边调试代码,边说明方法内容. 环境 python: 3.6.13 单向队列 初始化单向队列 放置一些数据 可以使用full()方法判断队列是否已经塞满数据,可以通过qsize()方法查看队列内元素数量. 这时候我们从队列取出数据,看先取到的是什么. 现在队列里面只有两个数,我们再塞入3个数看一下. 这个时候我们继续

  • Java中Arrays数组工具类的基本使用详解

    目录 方法一览表 快速定位详细操作 asList() toString() 和 deepToString() sort() 和 parallelSort() binarySearch() compare() 和 compareUnsigned() copyOf() 和 copyOfRange() equals() deepEquals() 比较equals()和deepEquals()方法  fill() mismatch() parallelPrefix() setAll() 和 parall

  • 缓存工具类ACache使用方法详解

    本文实例为大家分享了缓存工具类ACache的使用,供大家参考,具体内容如下 (1). ACache mCache = ACache.get(this); (2). String cacheData = mCache.getAsString("cache_data"); (3). if (!TextUtils.isEmpty(cacheData)) {                 解析.setAdapter.           } (4). 然后仍然请求网络,因为缓存的意义是为了在

  • Python面向对象类的继承实例详解

    本文实例讲述了Python面向对象类的继承.分享给大家供大家参考,具体如下: 一.概述 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 通过继承创建的新类称为"子类"或"派生类",被继承的类称为"基类"."父类"或"超类",继承的过程,就是从一般到特殊的过程.在某些 OOP

  • java树结构stream工具类的示例代码详解

    菜单实体类 package com.example.demo.entity; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; @Data @Builder @AllArgsConstructor @NoArgsConstructor public class Menu { /**

  • 对python 调用类属性的方法详解

    测试时候类的调用是经常会用到的.简单看下类的调用使用的方法吧. 来看例子: 目录结构: 我们现在要在do_class.py这个文件里调用class_learn.py里的类 代码(do_class.py): #!/usr/bin/env python3 #coding=utf-8 '''@Author:Jock''' from all_python_learn.class_and_funcation.class_learn import * b = Learn(1,2) b.get() print

  • Python 工具类实现大文件断点续传功能详解

    依赖 os.sys.requests 工具代码 废话不多说,上代码. #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Sat Oct 23 13:54:39 2021 @author: huyi """ import os import sys import requests def download(url, file_path): # 重试计数 count = 0 #

  • 对python:threading.Thread类的使用方法详解

    Python Thread类表示在单独的控制线程中运行的活动.有两种方法可以指定这种活动: 1.给构造函数传递回调对象 mthread=threading.Thread(target=xxxx,args=(xxxx)) mthread.start() 2.在子类中重写run() 方法 这里举个小例子: import threading, time class MyThread(threading.Thread): def __init__(self): threading.Thread.__in

  • Python 开发工具PyCharm安装教程图文详解(新手必看)

    PyCharm是由JetBrains打造的一款Python IDE,VS2010的重构插件Resharper就是出自JetBrains之手. 同时支持Google App Engine,PyCharm支持IronPython.这些功能在先进代码分析程序的支持下,使 PyCharm 成为 Python 专业开发人员和刚起步人员使用的有力工具. PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳

  • python编程普通及类和静态方法示例详解

    目录 前言 运行环境 普通方法 类方法 静态方法 前言 本文主要讲述了python类中的三类常用方法,普通方法.类方法和静态方法.  本文主要参考了https://youtu.be/rq8cL2XMM5M,强烈推荐一看这个系列的所有视频. 运行环境 import sys sys.version 结果为 '3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)]' 普通方

随机推荐