如需转发,请注明出处:小婷儿的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. elasticsearch6.7 05. Document APIs(5)Delete By Query API

    4.Delete By Query API _delete_by_query API可以删除某个匹配条件的文档: POST twitter/_delete_by_query { "query ...

  2. 机器学习实战 - python3 学习笔记(一) - k近邻算法

    一. 使用k近邻算法改进约会网站的配对效果 k-近邻算法的一般流程: 收集数据:可以使用爬虫进行数据的收集,也可以使用第三方提供的免费或收费的数据.一般来讲,数据放在txt文本文件中,按照一定的格式进 ...

  3. Change事件多参

    @change="(value) => selected(value, item)" selected(val, item) { if (val === true) { th ...

  4. 垂直水平居中总结css

    水平居中:给div设置一个宽度,然后添加margin:0 auto属性 div{ width:200px; margin:0 auto; } 让绝对定位的div垂直水平居中一(大盒子设置个相对定位) ...

  5. oracle数据库相关概念介绍

    数据库相关概念介绍: 问题: 数据存储:变量(基本类型,引用类型) 基本类型:少量数据 引用类型:保证数据的完整性 数据源: 声明直接赋值 IO流从硬盘中读取 java在处理数据时,需要从硬盘中读取数 ...

  6. React 入门学习笔记整理(三)—— 组件

    1.定义组件 1)函数组件 function GreateH(props){ return <div> <h2>hello,{props.name}</h2> &l ...

  7. Android6.0源码下载编译刷入真机

    编译环境是Ubuntu12.04.手机nexus 5,编译安卓6.0.1源码并烧录到真机. 源码用的是科大的镜像:http://mirrors.ustc.edu.cn/aosp-monthly/,下载 ...

  8. mybatis学习系列一

    1引入dtd约束(6) Mybatis git地址:https://github.com/mybatis/mybatis-3/wiki/Maven 指导手册:http://www.mybatis.or ...

  9. python第四十九天--paramiko模块安装大作战

    准备开始学习:paramiko模块,发现这个模块十分难搞 安装不上 搞了半天,win10 64下 pytyon 3.6 的 paramiko模块 死活安不上,在网上不断的找资料,可是没有用,没有用啊 ...

  10. 用python连接mysql失败总结

    所用环境:python3,pycharm2018.2.4 先用mysql创建用户并授予相关权限 在我用python连接mysql时,一直提示连接不上,报错原因就是,用户没有被给予相关权限,比如查询,插 ...