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.什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行 ...
随机推荐
- CSS_position
1. HTML Code: <div id="example"> <div id="div-before"> <p>id = ...
- 使用python制作ArcGIS插件(3)ArcPy的使用说明
使用python制作ArcGIS插件(3)ArcPy的使用说明 by 李远祥 ArcPy 是一个以成功的 arcgisscripting 模块为基础并继承了 arcgisscripting 功能进而构 ...
- cordova调用本地SQLite数据库的方法
第一篇技术博客,写下来和大家分享今天所学,其次自己也巩固一下. 整个下午的时间用来钻研如何用cordova调用移动端本地SQLite数据库.首先我并不是用eclipse来编程的,而是用cordova建 ...
- Hangfire 使用笔记
“巨人们”的地址 Hangfire Mysql: https://github.com/arnoldasgudas/Hangfire.MySqlStorage 在获取set表数据的sql语句有bug ...
- 总结ASP.NET MVC Web Application中将数据显示到View中的几种方式
当我们用ASP.NET MVC开发Web应用程序的时候,我们都是将需要呈现的数据通过"Controllers"传输到"View"当中,怎么去实现,下面我介绍一下 ...
- HTML学习笔记四
今日学习内容为: 1.文本域操作 <html> <head> <meta charset="utf-8"/> <title>Java ...
- 一个web应用的诞生(7)--结构调整
现在所有的Py代码均写在default.py文件中,很明显这种方法下,一旦程序变的负责,那么无论对于开发和维护来说,都会带来很多问题. Flask框架并不强制要求项目使用特定的组织结构,所以这里使用的 ...
- oracle 用系统用户以SYSDBA身份登陆
最近发现很多人问我 这么直接用系统OS用户 登陆 oracle : 1.首先通过用管理身份打开DOS命令窗口: 然后使用命令: sqlplus / as sysdba 即可: 其实这个命令和用sys用 ...
- vpn安装
尾戒0717 centos 6.5 openvpn 安装 安装环境: 系统:centos 6.5 openvpn:openvpn-2.2.1 lzo:lzo-2.09 下载地址:http:/ ...
- HttpHeplp 公共类 HttpWebRequest
public class HttpHelp { public CookieContainer CookieContainer { get; set; } public CookieCollection ...