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

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. HDU 2068 Choose the best route

    http://acm.hdu.edu.cn/showproblem.php?pid=2680 Problem Description One day , Kiki wants to visit one ...

  2. BZOJ 2326 数学作业(分段矩阵快速幂)

    实际上,对于位数相同的连续段,可以用矩阵快速幂求出最后的ans,那么题目中一共只有18个连续段. 分段矩阵快速幂即可. #include<cstdio> #include<iostr ...

  3. BZOJ 1806 矿工配餐(DP)

    很水的DP. 因为每一个餐车的加入只需要知道当前矿洞的前两个餐车种类就行了.而餐车一共就三种. 所以令dp[i][Sa][Sb]表示前i辆餐车送餐完毕后第一个矿洞的前两个餐车种类为Sa,第二个矿洞的前 ...

  4. Django 2.0 学习(13):Django模板继承和静态文件

    Django模板继承和静态文件 模板继承(extend) Django模板引擎中最强大也是最复杂的部分就是模板继承了,模板继承可以让我们创建一个基本的"骨架"模板,它可以包含网页中 ...

  5. BZOJ4011 HNOI2015落忆枫音(动态规划+拓扑排序)

    DAG中每个点选一条入边就可以构成一棵有向树,所以如果没有环答案就是∏degreei. 考虑去掉含环的答案.可以看做把环缩点,剩下的点仍然可以任意选入边.于是去除的方案数即为∏degreei/∏deg ...

  6. Greenlet-手动切换

    yield()是自己写的协程,Greenlet( )是已经封装好了的协程. 协程:遇到 I/O 操作就切换到别的地方了(先去处理其他携程去了).等原协程的 I/O 操作一完成就切回去.这样就把 I/O ...

  7. vscode Variables Reference

    vscode Variables Reference 您可以在以下链接中找到该列表:https://code.visualstudio.com/docs/editor/variables-refere ...

  8. [BZOJ2821]作诗

    description 在线询问区间内出现次数为正偶数的数的种数. data range \[n,m\le 10^5\] solution 分块大法好 首先离散化权值 这种对于权值做询问并且询问放在一 ...

  9. BZOJ1014:[JSOI2008]火星人prefix——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1014 Description 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样 ...

  10. android eclipse ndk使用记录

    为方便开发jni程序,android提供了ndk包来简化开发过程,避免开发人员下载完整的平台代码,并且可以在windows环境下集成到eclipse里面,大大加快了开发速度.这里记录下一个简单例子. ...