pyhton中的Queue(队列)
什么是队列?
队列就像是水管子,先进先出,与之相对应的是栈,后进先出。
队列是线程安全的,队列自身有机制可以实现:在同一时刻只有一个线程在对队列进行操作。
存数据,取数据
import Queue q = Queue.Queue() #调用队列生成对象
q.put(1) #存放第一个值到队列
q.put(2) #存放第二个值到队列 print 'get frist one:',q.get() #获取队列的第一个值
print 'get second on:',q.get() #获取队列的第二个值
如果队列中的数据被取完了怎么办呢?
会阻塞
q = Queue.Queue() #调用队列生成对象 q.put(1) #存放第一个值到队列
q.put(2) #存放第二个值到队列 a = q.get() #获取队列的第一个值
print 'get frist one:%s' % a
b = q.get() #获取队列的第二个值
print 'get second one:%s' % b
c = q.get()#获取队列的第三个值
print 'get third one:%s' % c #结果:
'''
get frist one:1
get second one:2
#这里是阻塞状态,一直在等待着值进来~
'''
取不到值的时候如何能让它不阻塞?
get_nowait()方法取
复制代码
q = Queue.Queue() #调用队列生成对象 q.put(1) #存放第一个值到队列
q.put(2) #存放第二个值到队列 a = q.get() #获取队列的第一个值
print 'get frist one:%s' % a
b = q.get() #获取队列的第二个值
print 'get second one:%s' % b
c = q.get_nowait()#获取队列的第三个值 ,使用:get_nowait()
print 'get third one:%s' % c
不阻塞的时候,取不到又会报错,怎么办?
异常处理
q = Queue.Queue() #调用队列生成对象
try:
q.get_nowait()
except Queue.Empty as f:
print 'The Queue is empty!'
队列的长度是可以规定的哦
那么问题来了,队列被存满了怎么办?----->会阻塞...
如何能不阻塞?---->put_nowait()----->无法存放会报错------>报错怎么办?------>异常处理。
q = Queue.Queue(2) #调用队列生成对象 q.put(1) #存放第一个值到队列
print 'put value 1 done'
q.put(2) #存放第二个值到队列
print 'put vlaue 2 done'
q.put(3) #存放第三个值到队列
print 'put value 3 done' #结果:
'''
put value 1 done
put vlaue 2 done
#这里会阻塞,会一直等待~
'''
参考资料:
http://www.cnblogs.com/luotianshuai/p/5098408.html
pyhton中的Queue(队列)的更多相关文章
- python中的Queue(队列)详解
一.Queue简介 python中的队列分类可分为两种: 1.线程Queue,也就是普通的Queue 2.进程Queue,在多线程与多进程会介绍. Queue的种类: FIFO: Queue.Que ...
- STL中的单向队列queue
转载自:http://blog.csdn.net/morewindows/article/details/6950917 stl中的queue指单向队列,使用时,包含头文件<queue>. ...
- jQuery动画高级用法(上)——详解animation中的.queue()动画队列插队函数
决定对animate方面做一些总结,希望能给大家一些启发和帮助 从一个实际应用谈起 今天不谈animate().fadeIn().fadeOut().slideUp().show().hide()诸如 ...
- 工业物联网或系统集成中应用消息队列(ActiveMQ,C#的demo)的场景全面分析
1.[连载]<C#通讯(串口和网络)框架的设计与实现> 2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 2.应用SuperIO(SIO)和开源跨平台物联网框 ...
- C#基础---Queue(队列)的应用
Queue队列,特性先进先出. 在一些项目中我们会遇到对一些数据的Check,如果数据不符合条件将会把不通过的信息返回到界面.但是对于有的数据可能会Check很多条件,如果一个数据一旦很多条件不 ...
- atitit. java queue 队列体系and自定义基于数据库的队列总结o7t
atitit. java queue 队列体系and自定义基于数据库的队列总结o7t 1. 阻塞队列和非阻塞队列 1 2. java.util.Queue接口, 1 3. ConcurrentLink ...
- 聊聊并发(七)——Java中的阻塞队列
3. 阻塞队列的实现原理 聊聊并发(七)--Java中的阻塞队列 作者 方腾飞 发布于 2013年12月18日 | ArchSummit全球架构师峰会(北京站)2016年12月02-03日举办,了解更 ...
- Java 集合深入理解(9):Queue 队列
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情不太好,来学一下 List 吧! 什么是队列 队列是数据结构中比较重要的一种类型,它支持 FIFO,尾部添加.头部 ...
- Python自动化运维之16、线程、进程、协程、queue队列
一.线程 1.什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行 ...
随机推荐
- IIS7上搭建网站的基本方法(系统推荐的安全方案)
1.创建的程序池命名默认为网站名称,程序池的标识采用默认的ApplicationPoolIdentity,这个会自动生成虚拟的用户,系统推荐的安全方案: 2.网站右键 基本设置 --> 连接为 ...
- 毕向东udp学习笔记2
项目功能: 发送端读取控制台输入,然后udp发送 接收端一直接收,直到输入为886 相对于笔记1,修改了发送端代码,实现发送控制台的内容,接收端循环接收,当输入886时,停止发送 发送端: impo ...
- Python2和Python3中除法操作/的不同
X/Y 在3.0版本之前的Python中 >>>1/2 0 即一个整数(无小数部分的数)被另外一个整数除,计算结果的小数部分被截除了,只留下了整数部分 有时候,这个功能比较有用,譬如 ...
- 【译文】什么是Docker
What is Docker? By Tim Butler • 14 May 2015 • https://www.conetix.com.au/blog/what-is-docker Unless ...
- (@WhiteTaken)设计模式学习——原型模式
有这样一个需求,两个对象,只是名称以及其他几个属性不一样,而其他的大部分的属性都是相同的. 这时候我们可以用到原型模式,也就是克隆模式. 原型模式:原型模式是一个对象创建型模式,通过克隆原对象,可以使 ...
- [bzoj1070][SCOI2007]修车——费用流
题目大意: 传送门 题解: 本题和(POJ3686)[http://poj.org/problem?id=3686]一题一模一样,而且还是数据缩小以后的弱化版QAQ,<挑战程序设计竞赛>一 ...
- jQuery_第二章_定时器
- 文件上传----FTP部署
- 用VUEJS做一个猫眼电影web app
之前一直在学习原生js,可是发现原生js虽然很好,但是想实现一个稍微复杂一点的项目都很麻烦.直到遇见了vue.js,发现vue是真的很好用,而且很简洁,利用组件化开发能够快速做出项目,所以为了学习vu ...
- 中文分词工具thulac4j正式发布
1. 介绍 thulac4j是THULAC的Java 8实现,相比于官方Java实现THULAC-Java,我们做了如下工作: 规范化分词词典,并去掉一些无用词: 重写DAT(双数组Trie树)的构造 ...