参考 官网

queue 模块

queue 模块实现多生产者,多消费者队列。

当必须在 多个线程之间安全地交换信息 时,它在线程编程中特别有用。

此模块中的Queue类实现了所有必需的锁定语义。
这取决于Python中线程支持的可用性;看到线程模块。

该模块实现了三种类型的队列,区别仅在于检索条目的顺序

三种类型队列

FIFO队列

先入先出。在 FIFO队列 中,添加的第一个任务是第一个检索的任务。

LIFO队列

后入先出。在 LIFO队列 中,最近添加的 item 是第一个被get()检索的(像堆栈一样运行)。

优先级队列

使用 优先级队列,item 将保持排序(使用heapq模块),并首先被get()检索到的是最低值的 item。

在内部,模块使用锁来临时阻止竞争线程;
但是,它不是为处理线程内的重入而设计的。

queue 模块定义以下类和异常:

class 类

Queue

FIFO队列的构造函数。

  1. queue.Queue(maxsize=0)
  2. # maxsize是一个整数,用于设置可以放入队列的项目数的上限。
  3. # 达到此大小后,插入将阻止,直到消耗队列项。
  4. # 如果maxsize小于或等于零,则队列大小为无限大。

LifoQueue

LIFO队列的构造函数。

  1. queue.LifoQueue(maxsize=0)
  2. # maxsize是一个整数,用于设置可以放入队列的项目数的上限。
  3. # 达到此大小后,插入将阻止,直到消耗队列项。
  4. # 如果maxsize小于或等于零,则队列大小为无限大。

PriorityQueue

优先级队列的构造函数。

  1. queue.PriorityQueue(maxsize=0)
  2. # maxsize是一个整数,用于设置可以放入队列的项目数的上限。
  3. # 达到此大小后,插入将阻止,直到消耗队列项。
  4. # 如果maxsize小于或等于零,则队列大小为无限大。
  5. # 首先检索最低值的条目(最低值条目是由 sorted(list(entries))[0] )返回的条目。
  6. # 条目的典型模式是以下形式的元组:(priority_number,data)。

异常

Empty

在对空的 Queue对象调用非阻塞 get()( 或 get_nowait() )时引发异常。

  1. queue.Empty

Full

在已满的 Queue对象调用非阻塞 get()( 或 get_nowait() )时引发异常。

  1. queue.Full

方法

queue 对象(Queue,LifoQueue 或 PriorityQueue)提供下面描述的公共方法。

Queue .qsize () 返回队列的大致大小。 注意,size()>0 不保证后续的 get() 不会阻塞,
qsize()<maxsize 也不保证put()不会阻塞。
Queue .empty () 队列是否为空,是返回True否返回False。 如果empty()返回True,则不保证对put()的后续调用不会阻塞。
类似地,如果empty()返回False,则不保证对get()的后续调用不会阻塞
Queue .full () 队列是否已满
Queue .put (item, block=True, timeout=None) 将 item 放入队列 如果可选的block为true且timeout为None(默认值),则在必要时阻塞,直到有空闲插槽可用。
如果timeout是一个正数,它会阻止最多超时秒,如果在该时间内没有可用的空闲槽,则会引发Full异常。
若 block 为 false,如果空闲插槽立即可用,则将项目放在队列上,否则引发完全异常(在这种情况下忽略超时)。
Queue .put_nowait (item) 相当于 put(item, False)
Queue .get (block=True, timeout=None) 从队列中删除并返回一个item 如果可选的block为true且timeout为None(默认值),则在必要时阻止,直到某个项可用为止。
如果timeout是一个正数,它会阻止最多超时秒,如果在该时间内没有可用的项,则会引发Empty异常。
若 block 为 false,如果一个项立即可用则返回一个项,否则引发Empty异常(在这种情况下忽略超时)。
Queue .get_nowait () 相当于get(False)
Queue .task_done () 表示以前排队的任务已完成 由队列使用者线程使用。对于用于获取任务的每个get(),对task_done()的后续调用会告知队列该任务的处理已完成。
Queue .join () 主线程等待子线程结束才结束

python queue - 同步队列类的更多相关文章

  1. Python 多线程同步队列模型

    Python 多线程同步队列模型 我面临的问题是有个非常慢的处理逻辑(比如分词.句法),有大量的语料,想用多线程来处理. 这一个过程可以抽象成一个叫“同步队列”的模型. 具体来讲,有一个生产者(Dis ...

  2. Python -- queue队列模块

    一 简单使用 --内置模块哦 import Queuemyqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限. ...

  3. Python线程优先级队列(Queue)

    Python的Queue模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列 LifoQueue,和优先级队列PriorityQueue.这些队列都实 ...

  4. python多线程以及同步队列(转)

    转自:http://www.w3cschool.cc/python/python-multithreading.html 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长 ...

  5. python多线程--优先级队列(Queue)

    Python的Queue模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue.这些队列都实现 ...

  6. Python学习---同步条件event/队列queue1223

    写在前面: 在使用这些共享API的时候,我们要注意以下几点: 在UNIX平台上,当某个进程终结之后,该进程需要被其父进程调用wait,否则进程成为僵尸进程(Zombie).所以,有必要对每个Proce ...

  7. Python3 queue队列类

    class queue.PriorityQueue(maxsize=0) 优先级队列构造函数. maxsize 是个整数,用于设置可以放入队列中的项目数的上限.当达到这个大小的时候,插入操作将阻塞至队 ...

  8. Python Queue队列

    queue is especially useful in threaded programming when information must be exchanged safely between ...

  9. 同步队列-Queue模块解析

    Queue模块解决了生产者.消费者问题,在多线程编程中进行线程通信的时候尤其有用,Queue类封装了加锁解锁的过程.         在Queue模块中有三种不同的队列类,区别是不同队列取出数据的顺序 ...

随机推荐

  1. [Xcode 实际操作]七、文件与数据-(12)数据持久化存储框架CoreData的使用:查找CoreData中的数据

    目录:[Swift]Xcode实际操作 本文将演示如何查找数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...

  2. 在Mybatis中处理sql中的大于号小于号

    因为xml格式中,不能随便出现"<".“>”等符号,所以在sql中这一类的符号要进行特殊处理 第一种方法:使用转义字符替换特殊的符号 例如 SELECT * FROM ...

  3. maven工程运行出Unable to compile class for JSP: 错误

    使用mvn tomcat:run运行时出现500错误,使用tomcat7再次运行就好了 更新,上面的是在命令行操作的 如果要在idea上面出现错误的话需要在pom.xml上配置下面的语句 org.ap ...

  4. NOIp2013 火柴排队【逆序对/思维】 By cellur925

    题目大意:给你两列数\(ai\)和\(bi\),你可以交换每列数中相邻的两个数,求一个最小交换次数使\(\sum_{i=1}^{n}(a_i-b_i)^2\) 最小. 最后满足条件的两个序列一定是各个 ...

  5. APP携参安装技术怎样帮助APP推广

    APP 如何自动实现携带参数安装?这是许多开发者感兴趣的问题,毕竟在 APP 开发的许多逻辑上常常不可避免的需要判断安装来源,比如:广告投放.用户邀请.用户行为.社交分享等 APP 推广环节,国内的 ...

  6. C 语言实例 - 阶乘

    C 语言实例 - 阶乘 一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1.自然数n的阶乘写作n!. n!=×××...×n.阶乘亦可以递归方式定义:!=, ...

  7. wcf双工通信

    一直以为感觉双工没弄懂,着实觉得很惆怅,在网上了解下双工的一些特点,直接上代码,以便以后项目中用的着: service层: 定义一个IDuplexHello服务接口 [ServiceContract( ...

  8. D - Simple String CSU - 1550

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1550 很久都没补这题,最近想学网络流,就看看,队友以前用网络流过的,Orz, 但是这题只需要简 ...

  9. arcgis python 保存当前窗口图形为jpg

    1,第一步打开arcgis 将图形加载进去 第二步,将要保存的图形调到合适的比例尺,然后点击下面按钮 第三步,将写好的python 语句放到里面去: import arcpy mxd = arcpy. ...

  10. angular2 基于webpack环境搭建

    目录结构: angular-quickstart |_ ts |_ app.ts |_ index.ts |_ index.html |_ package.json |_ tsconfig.json ...