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

class queue.Queue(maxsize=0)  # 先入先出
class queue.LifoQueue(maxsize=0)  # 后进先出
class queue.PriorityQueue(maxsize=0)  # 存储数据时可设置优先级的队列

优先级队列的构造函数。 maxsize是一个整数,用于设置可以放入队列数目的上限。 达到此大小后,插入将阻止,直到消耗队列项。 如果maxsize小于或等于零,则队列大小为无限大

首先检索最低值的条目(最低值条目是由sorted(list(entries))[0]返回的条目。 条目的典型模式是以下形式的元组:(priority_number,data)。

exception queue.Empty    #在空的Queue对象上调用非阻塞get()(或get_nowait())时引发的异常。
exception queue.Full     #在已满的Queue对象上调用非阻塞put()(或put_nowait())时引发异常。
Queue.qsize()
Queue.empty() #return如果为空则为真
Queue.full() #如果已满,则返回True
Queue.put(项目,块=真,超时=无)

将项目放入队列。 如果可选的args块为true且timeout为None(默认值),则在必要时阻塞,直到有空闲插槽可用。 如果timeout是一个正数,则它会阻止最多超时秒,如果在该时间内没有可用的空闲槽,则会引发Full异常。 否则(块为假),如果空闲插槽立即可用,则将项目放在队列中,否则引发完全异常(在这种情况下忽略超时)。

Queue.put_nowait(item)  #相当于 put(item,False)。
Queue.get(块=真,超时=无)

从队列中删除并返回一个项目。 如果可选的args块为true且timeout为None(默认值),则在必要时阻止,直到某个项可用为止。 如果timeout是一个正数,则它会阻止最多超时秒,如果在该时间内没有可用的项,则会引发Empty异常。 否则(块为假),如果一个项立即可用,则返回一个项,否则引发Empty异常(在这种情况下忽略超时)。

Queue.get_nowait() #相当于get(False)。

提供了两种方法来跟踪队列任务是否被守护进程使用者线程完全处理。

Queue.task_done()

指示先前进入队列的任务已经完成。用于队列使用者线程。对于用于获取任务的每个get(),对task_done()的后续调用告诉队列,任务的处理是完整的。

如果join()当前正在阻塞,则它将在所有项目都已处理后恢复(这意味着已为每个已放入队列的项目收到task_done()调用)。

如果调用的次数超过队列中放置的项目,则引发ValueError。

大聊Python----quene队列的更多相关文章

  1. 大聊Python----协程

    协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来 ...

  2. python 循环队列的实现

    最近在做一个东西的时候发现需要用到循环队列,实现先进先出(FIFO),不断往里面添加数据,当达到某个限定值时,最先进去的出去,然后再添加.之后需要对队列里面的内容进行一个筛选,作其他处理.首先我想到了 ...

  3. Python - 和我聊Python节目最新一期介绍 - 257期:使用超级电脑,Python,射电天文学知识来探索银河系

    今天,给大家简单介绍和我聊Python的最新一期节目,第257期:使用超级电脑,Python,射电天文学知识来探索银河系. 听着标题就觉得高大上,是的,我也是这么认为的.这次请的嘉宾来头很大,来自国际 ...

  4. Python - 翻译Talk Python To Me (和我聊Python) 播客

    “和我聊Python”是一个美国的聊天播客,英文名Talk Python To Me,类似于喜马拉雅的音频课程节目,只不过这个主题是编程语言Python.该节目从2015年的节目到现在,已经超过256 ...

  5. python消息队列snakemq使用总结

    Python 消息队列snakemq总结 最近学习消息总线zeromq,在网上搜了python实现的消息总线模块,意外发现有个消息队列snakemq,于是拿来研究一下,感觉还是很不错的,入手简单使用也 ...

  6. python RabbitMQ队列使用(入门篇)

    ---恢复内容开始--- python RabbitMQ队列使用 关于python的queue介绍 关于python的队列,内置的有两种,一种是线程queue,另一种是进程queue,但是这两种que ...

  7. 让大蛇(Python)帮你找工作

    前段时间用Python实现了一个网络爬虫(让大蛇(Python)帮你找工作),效率总体还可以,但是缺点就是每次都需要手动的去触发,于是打算对该爬虫加上Timer,经过网上一番搜索以及API的查询,发现 ...

  8. Python之队列Queue

    今天我们来了解一下python的队列(Queue) queue is especiall useful in threaded programming when information must be ...

  9. Python消息队列工具 Python-rq 中文教程

    原创文章,作者:Damon付,如若转载,请注明出处:<Python消息队列工具 Python-rq 中文教程>http://www.tiangr.com/python-xiao-xi-du ...

  10. Python 用队列实现多线程并发

    # Python queue队列,实现并发,在网站多线程推荐最后也一个例子,比这货简单,但是不够规范 # encoding: utf-8 __author__ = 'yeayee.com' # 由本站 ...

随机推荐

  1. OSG数学基础:坐标系统

    坐标系是一个精确定位对象位置的框架,所有的图形变换都是基于一定的坐标系进行的. 三维坐标系总体上可以分为两大类:左手坐标系和右手坐标系. 常用的坐标系:世界坐标系.物体坐标系和摄像机坐标系. 世界坐标 ...

  2. KindEditor是一套很方便的html编译器插件

    KindEditor是一套很方便的html编译器插件.在这里做一个简单的使用介绍. 首先在官网上下载最新的KindEditor文件(里面有jsp,asp等不同版本文件夹,可以删掉你不需要的版本), 把 ...

  3. 通过设置窗体的AcceptButton属性,可以设置窗体的“接受”按钮,若此设计,则用户每次按下Enter键都相当于单击该按钮

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. 使用gdb查看栈帧的情况, 没有ebp

    0x7fffffffdb58: 0x004005ba  0x00000000  0x00000000  0x00000000 <-----funcb的栈帧 [0x7fffffffdb60, 0x ...

  5. 【Python】python文件名和文件路径操作

    Readme: 在日常工作中,我们常常涉及到有关文件名和文件路径的操作,在python里的os标准模块为我们提供了文件操作的各类函数,本文将分别介绍“获得当前路径”“获得当前路径下的所有文件和文件夹, ...

  6. 将下载到本地的JAR包手动添加到Maven仓库(转)

    常用Maven仓库网址:http://mvnrepository.com/http://search.maven.org/http://repository.sonatype.org/content/ ...

  7. BZOJ 1297 迷路(矩阵快速幂)

    很容易想到记忆化搜索的算法. 令dp[n][T]为到达n点时时间为T的路径条数.则dp[n][T]=sigma(dp[i][T-G[i][n]]); 但是空间复杂度为O(n*T),时间复杂度O(n*n ...

  8. 【bzoj4602】[Sdoi2016]齿轮 BFS

    题目描述 给出一张n个点m条边的有向图,每条边 (u,v,x,y) 描述了 u 的点权乘 x 等于 v 的点权乘 y (点权可以为负).问:是否存在满足条件的图. 输入 有多组数据,第一行给定整数T, ...

  9. poj 1018 Communication System (枚举)

    Communication System Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22380   Accepted:  ...

  10. hadoop 编码实现文件传输、查看等基本文件控制

    hadoop集群搭建参考:https://www.cnblogs.com/asker009/p/9126354.html 1.创建一个maven工程,添加依赖 <?xml version=&qu ...