python Queue模块
先看一个很简单的例子
#coding:utf8
import Queue
#queue是队列的意思
q=Queue.Queue(maxsize=10)
#创建一个queue对象
for i in range(9):
q.put(i)
#放入元素
while not q.empty():#检测元素是否为空
print q.get(),#读取元素
#默认为先进先出
如果需要一个无限长或者先进后出的队列
#创建一个无限长的队列,如果maxsize小于1就表示队列长度无限。
q1=Queue.Queue(-1)
#1、Python Queue模块的FIFO队列先进先出。 class Queue.Queue(maxsize)
#2、LIFO类似于堆,即先进后出。 class Queue.LifoQueue(maxsize)
#3、还有一种是优先级队列级别越低越先出来。 class Queue.PriorityQueue(maxsize)
转载 http://www.jb51.net/article/58004.htm
关于是否阻塞和timeout的问题
官方文档:
Queue.get([block[, timeout]])-
Remove and return an item from the queue. If optional args block is true and timeout is None (the default), block if necessary until an item is available. If timeout is a positive number, it blocks at most timeout seconds and raises the
Emptyexception if no item was available within that time. Otherwise (block is false), return an item if one is immediately available, else raise theEmptyexception (timeout is ignored in that case).删除并且返回队列里的一项。如果可选参数block是true,并且timeout是None,那么等到队列里面没有项时,会一直阻塞下去。如果block是true并且timeout为一个正数(单位是秒),那么在timeout秒之内没有可用的项获得,就会引发empty异常。如果block是false,那么不管timeout是多少,一旦没有可用项,就会引发空异常。
put用法类似。
q2=Queue.Queue(3)
while not q2.full():#判断q2队列是否已满
q2.put('hello')
print q2.get(block=True, timeout=1)
print q2.get(block=True, timeout=1)
print q2.get(block=True, timeout=1)
print q2.get(block=True, timeout=7) '''
hello
hello
hello
七秒后引发异常
Traceback (most recent call last):
File "queuetext.py", line 22, in <module>
print q2.get(block=True, timeout=7)
File "C:\Python27\lib\Queue.py", line 176, in get
raise Empty
'''
#前面相同,将最后一句改为
print q2.get(block=True, timeout=None)
'''
hello
hello
'''
#前面相同,将最后一句改为
print q2.get(block=False, timeout=7)
'''
hello
hello
hello
立即引发异常
Traceback (most recent call last):
File "queuetext.py", line 22, in <module>
print q2.get(block=True, timeout=7)
File "C:\Python27\lib\Queue.py", line 176, in get
raise Empty
'''Queue.get_nowait()-
Equivalent to
get(False).
python Queue模块的更多相关文章
- python --- queue模块使用
1. 什么是队列? 学过数据结构的人都知道,如果不知道队列,请Google(或百度). 2. 在python中什么是多生产者,多消费模型? 简单来说,就是一边生产(多个生产者),一边消费(多个消费者) ...
- Python——Queue模块以及生产消费者模型
1.了解Queue Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递 |queue.Qu ...
- Python之Queue模块
Queue 1.创建一个“队列”对象 >>> import Queue >>> queue = Queue.Queue(maxsize=100) >>& ...
- Python -- queue队列模块
一 简单使用 --内置模块哦 import Queuemyqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限. ...
- Python中Queue模块及多线程使用
Python的Queue模块提供一种适用于多线程编程的FIFO实现.它可用于在生产者(producer)和消费者(consumer)之间线程安全(thread-safe)地传递消息或其它数据,因此多个 ...
- python中的Queue模块
queue介绍 queue是python的标准库,俗称队列.可以直接import引用,在python2.x中,模块名为Queue.python3直接queue即可 在python中,多个线程之间的数据 ...
- Python 单向队列Queue模块详解
Python 单向队列Queue模块详解 单向队列Queue,先进先出 '''A multi-producer, multi-consumer queue.''' try: import thread ...
- Python Queue实现生产与消费
Python Queue模块详解 from:https://blog.linuxeye.com/334.html Python中,队列是线程间最常用的交换数据的形式.Queue模块是提供队列操作的模块 ...
- Python3.5 queue模块详解
queue介绍 queue是python中的标准库,俗称队列,可以直接import 引用,在python2.x中,模块名为Queue 在python中,多个线程之间的数据是共享的,多个线程进行数据交换 ...
随机推荐
- Mercurial笔记(hg命令)
两个站点: http://z42.readthedocs.org/zh/latest/devtools/hg.html http://bucunzai.net/hginit/ 添加用户名 在.hg目录 ...
- noConflict
var _avalon = window.avalon avalon.noConflict = function(deep) { if (deep && window.avalon = ...
- 【转】构建C1000K的服务器(1) – 基础
原文来自 ideawu 构建C1000K的服务器(1) – 基础 著名的 C10K 问题提出的时候, 正是 2001 年, 到如今 12 年后的 2013 年, C10K 已经不是问题了, 任何一个普 ...
- Android下载更新代码
其实是昨天反编译一个apk,给它添加一个自动更新的功能用到的.为了在smali下方便查看,代码写的不规范,反正到了smali都一个吊样~~~~ 权限: <uses-permission andr ...
- Java实验三
20145113 20145102实验三 实验步骤 编码标准 编程标准包含:具有说明性的名字.清晰的表达式.直截了当的控制流.可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性 ...
- Linux下搭建FTP服务器
实习的公司有一台老服务器转作为FTP服务器,老大把这个任务交给了我.这两天边学边卖的捣腾起来,总算搞成.现在记录下来,加深映像,也以便以后查看复习. 服务器安装的是:Red Hat Enterpris ...
- 浅谈VB.Net 程序的编译和动态编译
---恢复内容开始--- 一般,我们都是通过Visual Studio(下面简称vs)来编写和编译vb.net应用程序的,但是,不少的人并不知道vs是通过何种方式编译程序的.今天,我们就来探讨一下编译 ...
- 在VS2013中使用Log4net
大致分为3个步骤 引用Log4net
- jQuery 常用方法经典总结
1.关于页面元素的引用通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom ...
- js判断浏览器,包括Edge浏览器
/* * 描述:判断浏览器信息 * 编写:LittleQiang_w * 日期:2016.1.5 * 版本:V1.1 */ //判断当前浏览类型 function BrowserType() { va ...