如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10293817.html

欢迎关注小婷儿的博客:

有问题请在博客下留言或加作者微信:tinghai87605025 或 QQ :87605025

python QQ交流群:py_data 483766429

博客园:http://www.cnblogs.com/xxtalhr/

csdn:https://blog.csdn.net/u010986753

一、概念

队列(queue)是一种先进先出的(First In First Out)的线性表,简称FIFO。队列允许在一端进行插入操作,而在另一端进行删除操作。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作

二、作用

   解耦:使程序直接实现松耦合,修改一个函数,不会有串联关系。

   提高处理效率:FIFO = 现进先出,LIFO = 后入先出。

注:队列可以并发的派多个线程,对排列的线程处理,并切每个需要处理线程只需要将请求的数据放入队列容器的内存中,线程不需要等待,当排列完毕处理完数据后,线程在准时来取数据即可。请求数据的线程只与这个队列容器存在关系,处理数据的线程down掉不会影响到请求数据的线程,队列会派给其他线程处理这分数据,它实现了解耦,提高效率。队列内会有一个有顺序的容器,列表与这个容器是有区别的,列表中数据虽然是排列的,但数据被取走后还会保留,而队列中这个容器的数据被取后将不会保留。当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用。

 class Queue:
def queue(self):
'''入队'''
def dequeue(self):
'''出队'''
if __name__ == '__main__':
xxt = [1, 2, 3, 4]
#相当于在队尾插入元素
xxt.insert(1, 10)
xxt.insert(0, 20)#0代表队尾
print('insert:',xxt) #相当于从队首删除元素
xxt.pop()
print('pop:',xxt)
'''结果

insert: [20, 1, 10, 2, 3, 4]

pop: [20, 1, 10, 2, 3]

'''

三、队列参数介绍

Queue.Queue(maxsize=0)   FIFO, 如果maxsize小于1就表示队列长度无限

Queue.LifoQueue(maxsize=0)   LIFO, 如果maxsize小于1就表示队列长度无限

Queue.qsize()   返回队列的大小

Queue.empty()   如果队列为空,返回True,反之False

Queue.full()   如果队列满了,返回True,反之False

Queue.get([block[, timeout]])   读队列,取出数据 ,没有数据将会等待timeout等待时间

Queue.put(item, [block[, timeout]])   写队列,放入数据,timeout等待时间

Queue.queue.clear()   清空队列

class queue.PriorityQueue(maxsize=0) 存储数据时可设置优先级的队列,优先级设置数越小等级越高

Queue.get(timeout = 1)如果1秒后没取到数据就退出

Queue.get_nowait() 取数据,如果没数据抛queue.Empty异常

Queue.task_done()后续调用告诉队列,任务的处理是完整的。

 from collections import deque
queue = deque(["Eric", "John", "Michael"])
print('queue:',queue)
queue.append("Terry")
print('queue.append:',queue)
queue.append("Graham")
print('queue.append:',queue)
queue.popleft()
print('queue.popleft:',queue)
queue.popleft()
print('queue.popleft:',queue) '''结果
queue: deque(['Eric', 'John', 'Michael'])
queue.append: deque(['Eric', 'John', 'Michael', 'Terry'])
queue.append: deque(['Eric', 'John', 'Michael', 'Terry', 'Graham'])
queue.popleft: deque(['John', 'Michael', 'Terry', 'Graham'])
queue.popleft: deque(['Michael', 'Terry', 'Graham'])
'''

来源: https://www.cnblogs.com/xiangsikai/p/8185031.html

OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

重要的事多做几遍。。。。。。

python 数据结构 队列(queue)的更多相关文章

  1. Python 单向队列Queue模块详解

    Python 单向队列Queue模块详解 单向队列Queue,先进先出 '''A multi-producer, multi-consumer queue.''' try: import thread ...

  2. Python之队列Queue

    今天我们来了解一下python的队列(Queue) queue is especiall useful in threaded programming when information must be ...

  3. Python数据结构———队列

    队列(Queue) 队列也是一系列有顺序的元素的集合,新元素的加入在队列的一端,叫做“队尾”(rear),已有元素的移除发生在队列的另一端,叫做“队首”(front),和栈不同的是,队列只能在队尾插入 ...

  4. python消息队列Queue

    实例1:消息队列Queue,不要将文件命名为"queue.py",否则会报异常"ImportError: cannot import name 'Queue'" ...

  5. Python之队列queue模块使用 常见问题与用法

    python 中,队列是线程间最常用的交换数据的形式.queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外. 1. 阻塞模式 import queue q = queu ...

  6. 用go实现常用算法与数据结构——队列(queue)

    queue 简介 队列是一种非常常见的数据结构,日常生活中也能经常看到.一个典型的队列如下图(图片来自 segmentfault): 可以看出队列和我们日常生活中排队是基本一致的.都遵循 FIFO(F ...

  7. 数据结构 -- 队列Queue

    一.队列简介 定义 队列(queue)在计算机科学中,是一种先进先出的线性表. 它只允许在表的前端进行删除操作,而在表的后端进行插入操作.进行插入操作的端称为队尾,进行删除操作的端称为队头.队列中没有 ...

  8. python实现队列(queue)

    队列队列是一种先进先出的数据结构,主要操作包括入队,出队.入队的元素加入到对尾,从队头取出出队的元素.这里用列表简单模拟队列,其实现如下: queue()is_empty()size()enqueue ...

  9. [C++][数据结构]队列(queue)的实现

    对于队列的定义,前人之述备矣. 队列的实现方法与栈非常相似.我直接在我实现的那个栈的代码上加了一点东西,全局替换了一些标识符,就实现了这个队列. 我实现的是一个queue<value>容器 ...

随机推荐

  1. 【Java并发编程】15、ReentrantLock实现原理深入探究

    原文已经写得非常详细了,直接把大神的文章转发过来了  https://www.cnblogs.com/xrq730/p/4979021.html 前言 这篇文章被归到Java基础分类中,其实真的一点都 ...

  2. Linux Centos下安装jdk

    1.准备工作 https://www.cnblogs.com/dddyyy/p/9746942.html 上面这篇博客讲了如何安装linux 你想安装的jdk(对应版本的jdk) 连接Linux的软件 ...

  3. 微信小程序下拉框之二维数组或对象

    在项目中,我们大多数时候传的值并不是需要这个下标,而是其他的值.像我项目中,需要获取到的是它对应的Id,那么我们如何通过它的这个下标值返回你想要的值呢? 通过picker返回的索引值,去获取匹配你想获 ...

  4. IDEA项目搭建十二——站点用户登录会话实现

    一.简介 前两天写了一篇用户登录会话设计的脑图,这次就把这个引入到项目中实现,总体来说需要几步先罗列一下: 1.需要一个Cookie工具类用于读写cookie 2.需要一个Cache工具类用于在服务端 ...

  5. Sql Server 向上取整、向下取整、四舍五入取整

    ==================================================== [四舍五入取整截取] select round(55.56,0) ============== ...

  6. 交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别

    交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别 自己之前一直没搞清楚这两个交叉编译器到底有什么问题,特意google一番,总结如下,希望能帮到道上和 ...

  7. 开始记录 Windows Phone 生涯

    已经快接近三年没有更新博客了,最近打算把博客这块从新建设起来. 由于工作原因,现在已经很久没有接触过Android了.目前工作是全力 Windows Phone,并且也已经工作一年半了,以后会陆续把之 ...

  8. Java并发编程(九)并发容器

    并发容器的简单介绍: ConcurrentHashMap代替同步的Map(Collections.synchronized(new HashMap())),众所周知,HashMap是根据散列值分段存储 ...

  9. (后端)Java跨域过滤器

    private FilterConfig config = null; @Override public void init(FilterConfig config) throws ServletEx ...

  10. weblogic系列漏洞整理 -- 2. weblogic弱口令

    目录 二. weblogic弱口令 0. 思路 1. python爆破脚本 2. 技巧 一.weblogic安装 http://www.cnblogs.com/0x4D75/p/8916428.htm ...