Python Queue模块详解

转载 2015年11月19日 11:46:17

Python中,队列是线程间最常用的交换数据的形式。Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。

创建一个“队列”对象
import Queue
q = Queue.Queue(maxsize = 10)
Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。

将一个值放入队列中
q.put(10)
调用队列对象的put()方法在队尾插入一个项目。put()有两个参数,第一个item为必需的,为插入项目的值;第二个block为可选参数,默认为
1。如果队列当前为空且block为1,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为0,put方法将引发Full异常。

将一个值从队列中取出
q.get()
调用队列对象的get()方法从队头删除并返回一个项目。可选参数为block,默认为True。如果队列为空且block为True,get()就使调用线程暂停,直至有项目可用。如果队列为空且block为False,队列将引发Empty异常。

Python Queue模块有三种队列及构造函数:
1、Python Queue模块的FIFO队列先进先出。     class Queue.Queue(maxsize)
2、LIFO类似于堆,即先进后出。                         class Queue.LifoQueue(maxsize)
3、还有一种是优先级队列级别越低越先出来。    class Queue.PriorityQueue(maxsize)

此包中的常用方法(q = Queue.Queue()):
q.qsize() 返回队列的大小
q.empty() 如果队列为空,返回True,反之False
q.full() 如果队列满了,返回True,反之False
q.full 与 maxsize 大小对应
q.get([block[, timeout]]) 获取队列,timeout等待时间
q.get_nowait() 相当q.get(False)
非阻塞 q.put(item) 写入队列,timeout等待时间
q.put_nowait(item) 相当q.put(item, False)
q.task_done() 在完成一项工作之后,q.task_done() 函数向任务已经完成的队列发送一个信号

q.join() 实际上意味着等到队列为空,再执行别的操作


转载自:https://blog.linuxeye.com/334.html

python队列queue模块详解

队列queue 多应用在多线程应用中,多线程访问共享变量。对于多线程而言,访问共享变量时,队列queue是线程安全的。从queue队列的具体实现中,可以看出queue使用了1个线程互斥锁(pthrea...
  • hehe123456ZXC
  • hehe123456ZXC
  • 2016年08月22日 13:55
  • 9413

python Queue模块

python Queue模块Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队...
  • manjianchao
  • manjianchao
  • 2017年04月06日 08:52
  • 697

Python 中的queue模块

本文转载至: https://blog.linuxeye.com/334.html 作为标准库中的queue模块,在实际的开发中也是很常见的。其实数据结构这种东西,在任何的编程语言中都是相通的,无...
  • Marksinoberg
  • Marksinoberg
  • 2016年11月27日 20:26
  • 8095

python Queue模块

创建一个“队列”对象 import Queue myqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现。队列长度可为无限或...
  • bravezhe
  • bravezhe
  • 2013年02月18日 16:43
  • 74791

python Queue模块

创建一个“队列”对象 import Queue myqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可...
  • IamaIearner
  • IamaIearner
  • 2013年07月18日 10:10
  • 32966

python Queue模块

创建一个“队列”对象 import Queue myqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限...
  • yatere
  • yatere
  • 2011年08月08日 02:35
  • 24284

python中的Queue与多进程(multiprocessing)

最近接触一个项目,要在多个虚拟机中运行任务,参考别人之前项目的代码,采用了多进程来处理,于是上网查了查python中的多进程 一、先说说Queue(队列对象) Queue是python中的...
  • shuyun123456789
  • shuyun123456789
  • 2015年04月03日 16:07
  • 2170

python 双端队列 deque

什么是双端队列 deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。 优点 ...
  • Evan123mg
  • Evan123mg
  • 2015年11月19日 11:40
  • 1574

高性能Python之:Queue,deque,queue对比

Python作为一门脚本语言,有着很多便捷易用的优秀特点,但他也有一个很大的缺陷,就是性能太差,这也是作为脚本语言不可避免的问题,这里我们来学习一些方法,提高Python的性能: 为了大家测...
  • xfyangle
  • xfyangle
  • 2017年03月11日 13:03
  • 3438

队列(Queue)的python实现及其应用

队列的说明 一个线性的数据结构 队列遵循FIFO的原则,First In , First Out 即先进先出 队列头部为front,尾部为rear 队列的函数列表代码实现# author: HuYon...
  • nghuyong
  • nghuyong
  • 2016年06月25日 23:52
  • 2412
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python Queue模块详解
举报原因:
原因补充:

(最多只允许输入30个字)