queue队列
1.作用:解耦,提高效率。队列就是一个容器,一个有顺序的容器。
q.queue.Queue(maxsize=3): 生成一个队列的实例,并且最多存储3个元素
q.get(item,block=Ture, timeout=None ): 从队列里取数据
q.get( block=Ture, timeout=None) : 两个可选参数,默认取不到数据就阻塞
q.get( block=False): 取不到数据不阻塞,而是抛出异常
q.get( timeout=1): 卡1秒
q.qsize( ): 查询队列中还剩多少元素。
#先进先出
import queue
q=queue.Queue() #生成一个队列的实例
q.put('d1')
q.put('d2')
q.put('d3')
print(q.qsize())
print(q.get())
运行结果:
3
d1
2. Lifo: last in first out, 后进先出
import queue
q=queue.LifoQueue()
q.put(1)
q.put(2)
q.put(3)
print(q.get())
print(q.get())
print(q.get())
运行结果:
3
2
1
3. 存储数据是可设置优先级的队列 queue.PriorityQueue(maxsize=0)
import queue
q=queue.PriorityQueue()
q.put((10,'Alex'))
q.put((2,'Jack'))
q.put((5,'Tom')) print(q.get())
print(q.get())
print(q.get())
运行结果:
(2, 'Jack')
(5, 'Tom')
(10, 'Alex')
4. 生产者消费者模型
import threading,time,queue
q=queue.Queue(maxsize=10) def Producer(name):
count=1
while True:
q.put("骨头%s" % count)
print('骨头',count)
count+=1
time.sleep(0.1) def Consumer(name):
while True:
print('%s 吃到了 %s'%(name,q.get()))
time.sleep(1)
p=threading.Thread(target=Producer,args=('alex',))
c1=threading.Thread(target=Consumer,args=('张三',))
c2=threading.Thread(target=Consumer,args=('李四',)) p.start()
c1.start()
c2.start()
运行结果:
骨头 1
张三 吃到了 骨头1
骨头 2
李四 吃到了 骨头2
骨头 3
骨头 4
骨头 5
骨头 6
骨头 7
骨头 8
骨头 9
骨头 10
骨头 11
张三 吃到了 骨头3
骨头 12
李四 吃到了 骨头4
骨头 13
骨头 14
骨头 15
张三 吃到了 骨头5
骨头 16
李四 吃到了 骨头6
骨头 17
张三 吃到了 骨头7
李四 吃到了 骨头8
骨头 18
骨头 19
张三 吃到了 骨头9
李四 吃到了 骨头10
骨头 20
张三 吃到了 骨头11
骨头 21
李四 吃到了 骨头12
骨头 22
张三 吃到了 骨头13
骨头 23
李四 吃到了 骨头14
queue队列的更多相关文章
- C#基础---Queue(队列)的应用
Queue队列,特性先进先出. 在一些项目中我们会遇到对一些数据的Check,如果数据不符合条件将会把不通过的信息返回到界面.但是对于有的数据可能会Check很多条件,如果一个数据一旦很多条件不 ...
- 第19章 queue队列容器
/* 第19章 queue队列容器 19.1 queue技术原理 19.2 queue应用基础 19.3 本章小结 */ // 第19章 queue队列容器 // 19.1 queue技术原理 // ...
- atitit. java queue 队列体系and自定义基于数据库的队列总结o7t
atitit. java queue 队列体系and自定义基于数据库的队列总结o7t 1. 阻塞队列和非阻塞队列 1 2. java.util.Queue接口, 1 3. ConcurrentLink ...
- C#部分---特殊集合:stack栈集合、queue队列集合、哈希表集合。
1.stack栈集合:又名 干草堆集合 栈集合 特点:(1)一个一个赋值 一个一个取值(2)先进后出实例化 初始化 Stack st = new Stack(); //添加元素用push st.Pus ...
- 实现一个线程安全的Queue队列
使用装饰者模式实现一个线程安全的Queue队列. public class SynchronizedQueue<E> implements Queue<E>, Serializ ...
- Python自动化运维之16、线程、进程、协程、queue队列
一.线程 1.什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行 ...
- Stack集合 Queue队列集合 Hashtable哈希表
Stack集合 干草堆集合 栈集合 栈;stack,先进后出,一个一个赋值,一个一个取值,安装顺序来. 属性和方法 实例化 初始化 Stack st = new Stack(); 添加元素 个数 Co ...
- Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块
Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fab ...
- python threading模块使用 以及python多线程操作的实践(使用Queue队列模块)
今天花了近乎一天的时间研究python关于多线程的问题,查看了大量源码 自己也实践了一个生产消费者模型,所以把一天的收获总结一下. 由于GIL(Global Interpreter Lock)锁的关系 ...
- (8)进程---Queue队列
# IPC Inter-Process Communication # 实现进程之间通信的两种机制: # 管道 Pipe 用的很少 # 队列 Queue 队列的特征:现进先出,栈属于后进后出 基本语法 ...
随机推荐
- 北京Uber优步司机奖励政策(2月19日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 「专题训练」k-Tree(CodeForces Round #247 Div.2 C)
题意与分析(Codeforces-431C) 题意是这样的:给出K-Tree--一个无限增长的树,它的每个结点都恰有\(K\)个孩子,每个节点到它\(K\)个孩子的\(K\)条边的权重各为\(1,2, ...
- 关于html2canvas清晰度
最近有个小项目 需要生成海报让用户去分享~~~vue做的,海报通过html2canvas 生成. 遇到的最大问题是生成图片的清晰度~~网上找了好多方法. 放大倍数!~网上找的~~ var cntEle ...
- ajax的$.get()方法和tomcat服务器的交互
AJAX AJAX = 异步 JavaScript 和 XML. AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. Ajax get()方法 定义和用法 $.get() 方法 ...
- Memcache的客户端连接系列(三) C++
关键词: Memcached C++ 客户端 声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南.客户端连接方法通用,故摘抄过来分享给大家. C++客户端示例 ...
- 【MySQL解惑笔记】Navicat 无法远程连接MySQL数据库
安装好Navicat之后远程连接MySQL数据库出现以下报错截图: 出现以上截图怀疑是mysql用户权限不够: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.1 ...
- Machine Learning笔记整理 ------ (二)训练集与测试集的划分
在实际应用中,一般会选择将数据集划分为训练集(training set).验证集(validation set)和测试集(testing set).其中,训练集用于训练模型,验证集用于调参.算法选择等 ...
- Matlab提速方法
1. 向量化. 尽量少用for循环. 2. 循环竖着走比横着走快. 3. 内置函数也有优化的空间 不少内置函数都有大量的error check.直接用profiler找出真正干活的.不少内置函数在网上 ...
- 预分配内存fifo实现可变长度字节序列存储
预分配内存fifo实现可变长度字节序列存储 github链接https://github.com/gexin1023/utils/tree/master/fifo fifo即先进先出队列,可以用链表来 ...
- [leetcode-666-Path Sum IV]
If the depth of a tree is smaller than 5, then this tree can be represented by a list of three-digit ...