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...

python Queue模块

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

python队列在Queue,Collection 的基础

以下内容分别来自: http://www.cnblogs.com/itogo/p/5635629.html http://blog.csdn.net/u010504064/article/deta...

JoinableQueue 用于Python多进程生产者消费者问题的注意事项

参考文献: Queue是Python标准库的队列实现。在网上经常看到示例代码是这样实现的:  url = queue.get() queue.task_done() ... ...

5.Python的Queue模块

python Queue模块 多线程编程 线程安全

python 双端队列 deque

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

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

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

Python 标准库 —— 队列(Queue,优先队列 PriorityQueue)

优先队列,有别于普通队列的先入先出(虽然字面上还是队列,但其实无论从含义还是实现上,和普通队列都有很大的区别),也有别于栈的先入后出。在实现上,它一般通过堆这一数据结构,而堆其实是一种完全二叉树,它会...

python十个queue的排序法

class Queue: def __init__(self): self.items = [] def isEmpty(self): return s...

Python实现基本数据结构---队列操作

#! /usr/bin/env python #coding=utf-8class Queue(object): def __init__(self,size): self.s...
  • will130
  • will130
  • 2015年04月26日 15:58
  • 924
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python Queue模块详解
举报原因:
原因补充:

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