什么是队列?

队列就像是水管子,先进先出,与之相对应的是栈,后进先出。

队列是线程安全的,队列自身有机制可以实现:在同一时刻只有一个线程在对队列进行操作。

存数据,取数据

 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(队列)的更多相关文章

  1. python中的Queue(队列)详解

    一.Queue简介 python中的队列分类可分为两种: 1.线程Queue,也就是普通的Queue 2.进程Queue,在多线程与多进程会介绍. Queue的种类: FIFO:  Queue.Que ...

  2. STL中的单向队列queue

    转载自:http://blog.csdn.net/morewindows/article/details/6950917 stl中的queue指单向队列,使用时,包含头文件<queue>. ...

  3. jQuery动画高级用法(上)——详解animation中的.queue()动画队列插队函数

    决定对animate方面做一些总结,希望能给大家一些启发和帮助 从一个实际应用谈起 今天不谈animate().fadeIn().fadeOut().slideUp().show().hide()诸如 ...

  4. 工业物联网或系统集成中应用消息队列(ActiveMQ,C#的demo)的场景全面分析

    1.[连载]<C#通讯(串口和网络)框架的设计与实现> 2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 2.应用SuperIO(SIO)和开源跨平台物联网框 ...

  5. C#基础---Queue(队列)的应用

       Queue队列,特性先进先出. 在一些项目中我们会遇到对一些数据的Check,如果数据不符合条件将会把不通过的信息返回到界面.但是对于有的数据可能会Check很多条件,如果一个数据一旦很多条件不 ...

  6. atitit. java queue 队列体系and自定义基于数据库的队列总结o7t

    atitit. java queue 队列体系and自定义基于数据库的队列总结o7t 1. 阻塞队列和非阻塞队列 1 2. java.util.Queue接口, 1 3. ConcurrentLink ...

  7. 聊聊并发(七)——Java中的阻塞队列

    3. 阻塞队列的实现原理 聊聊并发(七)--Java中的阻塞队列 作者 方腾飞 发布于 2013年12月18日 | ArchSummit全球架构师峰会(北京站)2016年12月02-03日举办,了解更 ...

  8. Java 集合深入理解(9):Queue 队列

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情不太好,来学一下 List 吧! 什么是队列 队列是数据结构中比较重要的一种类型,它支持 FIFO,尾部添加.头部 ...

  9. Python自动化运维之16、线程、进程、协程、queue队列

    一.线程 1.什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行 ...

随机推荐

  1. php curl详细解析和常见大坑

    1. 拿来先试试手 比如我们以著名的"测试网络是否连接"的网站--百度为例,来尝试下curl <?php // create curl resource $ch = curl ...

  2. http协议详解(超详细)

    http1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consorti ...

  3. Jasmine基础语法

    简介 Jasmine 是JavaScript的测试框架,它不依赖其他框架,也不依赖DOM,更重要的是它语法简单.以下实例都是基于Jasmine 2.5.2的,并且来自官网:https://jasmin ...

  4. python面向对象编程对象和实例的理解

    给你一个眼神,自己体会

  5. 一个Python小白5个小时爬虫经历

    前言 最近业余在做一个基于.NET Core的搜索项目,奈何基层代码写好了,没有看起来很华丽的数据供测试.很巧的也是博客搜索,于是乎想到了博客园.C#也能做做页面数据抓取的,不过在博客园看到的大部分都 ...

  6. object c入门

    无意间看到Object C编写的程序,感觉蛮有意思的,记载下来,慢慢品味,也许会有用得上的时候.吼吼~~ 大部分有一点其他平台开发基础的初学者看到XCode,第一感想是磨拳擦掌,看到 Interfac ...

  7. android学习5——画图问题

    重写View中的onDraw函数可以实现画图.代码如下: @Override public void onDraw(Canvas canvas) { Paint paint = new Paint() ...

  8. .Net Standard扩展支持实例分享

    上篇(.Net基础体系和跨框架开发普及)介绍了.Net当前生态下的大概情况,也分享了简单实现的过程,这篇文章就是讲解我的OSS.Common项目扩展.Net Standard 支持的过程,主要集中在: ...

  9. C++之priority_queue

    前言 最近越来越觉得自己总结的事情越来越流水账,因此,我需要提高我总结内容的精度.所以可能会导致写博客的时间会延长一些. 之前从没用过优先队列,刷算法题目的时候才开始了解的,所以做个总结.什么情况下使 ...

  10. ASP.NET MVC 使用Uploadify实现多文件异步无刷新上传

    软件技术开发,合作请联系QQ:858-048-581 这里我通过使用uploadify组件来实现异步无刷新多文件上传功能. 1.首先下载组件包uploadify,我这里使用的版本是3.1 2.下载后解 ...