#!/usr/bin/env python
# coding=utf-8import Queue
import time'''
https://docs.python.org/2/library/queue.htmlQueue模块在Python 3中改名为queue了。
Queue模块实现了多个生产者消费者列队,可以在多线程中进行安全的信息交换。
Queue模块定义了三个类:Queue.Queue, Queue.LifoQueue, Queue.PriorityQueue,还包含两个异常:Queue.Empty, Queue.Full。
''''''
exception Queue.Empty:
如果队列为空,使用非阻塞的方法获取队列的值,如get()或get_nowait(),则抛出此异常。
''''''
exception Queue.Full:
如果队列已满,使用非阻塞的方法插入值,如put()或put_nowait(),则抛出此异常。
''''''
Queue的方法:
qsize():获取队列的大概容量,是大概容量!!!
empty():是否空。
full():是否满。
put(item[, block[, timeout]]):数据入队,默认block是True,timeout为None,队列满则阻塞;如果block为True,timeout > 0,则等待timeout秒,队列仍为满则抛Full异常;如果block为False,则队列满立刻抛Full异常。
put_nowait(item):等同于put(item, block=False)。
get([block[, timeout]]):数据移出队列,默认block是True,timeout为None,队列空则阻塞;如果block为True,timeout > 0,则等待timeout秒,队列仍为空则抛Empty异常;如果block为False,则队列空立刻抛Empty异常。
get_nowait():等同于get(block=False)。
task_done():指示正常入队的数据任务已完成。在get()后再调用task_done()则告诉队列此项数据任务已完成。如果调用的次数比数据项的数目多,则抛出ValueError异常。
join():队列一直阻塞,直到所有数据出列并处理。新入列数据项,总数据项增加1。当数据出列,处理完后调用task_done()则表示处理完毕,总数据项减1。
''''''
class Queue.Queue(maxsize=0):
先入先出队列,maxsize是指定最大容量,如果为0或负值,则队列容量可以无穷大。队列满还插入则会阻塞。
'''
def operate_queue():q = Queue.Queue()print u'队列空吗?{0}'.format(q.empty())q.put('data1')q.put('data2')q.put('data3')print u'队列满吗?{0}'.format(q.full())print q.get()print q.get()print q.get()try:print u'时间点:{0}'.format(time.ctime())q.get(timeout=3)  # 阻塞3秒,然后抛Empty异常except Queue.Empty:print u'时间点:{0}'.format(time.ctime())print u'队列已经空了'try:print u'时间点:{0}'.format(time.ctime())q.get_nowait()  # 即刻抛Empty异常except Queue.Empty:print u'时间点:{0}'.format(time.ctime())print u'队列已经空了'try:print u'时间点:{0}'.format(time.ctime())q.get(block=False)  # 即刻抛Empty异常except Queue.Empty:print u'时间点:{0}'.format(time.ctime())print u'队列已经空了'print u'队列大概容量为:{0}'.format(q.qsize())q = Queue.Queue(maxsize=3)q.put('d1')q.put('d2')q.put('d3')try:print u'时间点:{0}'.format(time.ctime())q.put('d4', block=False)  # 即刻抛Full异常except Queue.Full:print u'时间点:{0}'.format(time.ctime())print u'队列已经满了''''
class Queue.LifoQueue(maxsize=0):
后入先出队列,maxsize是指定最大容量,如果为0或负值,则队列容量可以无穷大。队列满还插入则会阻塞。
'''
def operate_lifoqueue():q = Queue.LifoQueue()q.put(1)q.put(2)q.put(3)print q.get()print q.get()print q.get()'''
class Queue.PriorityQueue(maxsize=0):
优先队列,maxsize是指定最大容量,如果为0或负值,则队列容量可以无穷大。队列满还插入则会阻塞。
典型的队列数据为元组(priority_num, data),优先值越小,优先级越高。
'''
def operate_priorityqueue():q = Queue.PriorityQueue()  # 数字小优先级高q.put((1, 'YaoMing'))q.put((-1, 'MaLong'))q.put((10, 'ZhengZhi'))q.put((5, 'ZhuTing'))print q.get()print q.get()print q.get()print q.get()if __name__ == '__main__':print u'先进先出队列:'operate_queue()print '*' * 50print u'后进先出队列:'operate_lifoqueue()print '*' * 50print u'优先队列:'operate_priorityqueue()'''
输出为:先进先出队列:
队列空吗?True
队列满吗?False
data1
data2
data3
时间点:Thu Jun 27 16:33:27 2019
时间点:Thu Jun 27 16:33:30 2019
队列已经空了
时间点:Thu Jun 27 16:33:30 2019
时间点:Thu Jun 27 16:33:30 2019
队列已经空了
时间点:Thu Jun 27 16:33:30 2019
时间点:Thu Jun 27 16:33:30 2019
队列已经空了
队列大概容量为:0
时间点:Thu Jun 27 16:33:30 2019
时间点:Thu Jun 27 16:33:30 2019
队列已经满了
**************************************************
后进先出队列:
3
2
1
**************************************************
优先队列:
(-1, 'MaLong')
(1, 'YaoMing')
(5, 'ZhuTing')
(10, 'ZhengZhi')
'''

源码可于github下载:https://github.com/gkimeeq/PythonLearning。

转载于:https://www.cnblogs.com/Ooman/p/11096656.html

队列模块(Queue)相关推荐

  1. Python3 queue队列模块详解

    queue介绍 queue是python中的标准库,俗称队列. 在python中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够保证数据的安全性和一致性,所以当多个线程需要进行数据交换 ...

  2. python concurrent queue_Python的并发并行[2] - 队列[0] - queue 模块

    queue模块/ queue Module 1常量/ Constants Pass 2函数/ Function Pass 3类/ Class 3.1 Queue类 类实例化:queue= queue. ...

  3. python 队列 一次取多个_Queue 队列模块-Python成为专业人士笔记

    "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com 介绍 队列模块能实现多生产者.多消费者的队列 ...

  4. [译] 流量控制(TC)五十年:从基于缓冲队列(Queue)到基于时间戳(EDT)的演进...

    译者序 本文组合翻译了 Google 2018 年两篇分享中的技术部分,二者讲地同一件事情,但层次侧重不同: Netdev 2018: Evolving from AFAP: Teaching NIC ...

  5. 《Python全栈开发:Python 队列(queue)》

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

  6. Python 队列(Queue)用法

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

  7. 【Java】使用单向链表实现一个队列(Queue)

    队列(Queue)是数据结构的一种,元素存储满足的特征是先入的先出(类似于现实生活中的排队这一场景) 队列的实现可以使用双向链表,也可以使用单向链表: 在使用单向链表实现队列时候,需要多加一个记录尾结 ...

  8. Berkeley DB的数据存储结构——哈希表(Hash Table)、B树(BTree)、队列(Queue)、记录号(Recno)...

    Berkeley DB的数据存储结构 BDB支持四种数据存储结构及相应算法,官方称为访问方法(Access Method),分别是哈希表(Hash Table).B树(BTree).队列(Queue) ...

  9. python 实现队列功能 queue insert() pop()

    def calculate_detection_num(self, calcu_list, detect_num):"""计算一段次数内平均识别个数"" ...

  10. 五、队列(Queue)

    一.概述 队列(queue): 只允许在一端进行插入 (队尾) 操作,而在另一端 (队头) 进行删除操作的线性表. 队头:删除操作的一端--front 队尾:插入操作的一端--rear 特点:先进先出 ...

最新文章

  1. 华为机考HJ17坐标移动
  2. 【Vegas原创】exp时,ORA-00932: 数据类型不一致解决方法
  3. js form中的onsubmit和action
  4. Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】
  5. rabbitmq异步_在Node.js中使用RabbitMQ和Tortoise进行异步消息传递
  6. Mobaxterm中使用git log报错/bin/busybox.exe less -R no such file or directory
  7. Ubuntu安装好后,没有网络怎么办?
  8. 优雅降级实现IE8的transform平移属性
  9. 802d简明调试手册_西门子数控系统828D简明调试手册.pdf
  10. 单片机七阶音符_单片机教程二十七:单片机音乐程序设计(含源程序)
  11. c语言 输出方阵。输入一个正整数 n(1≤n≤10),打印一个n行n列的方阵,输出如下方阵
  12. [ Tensorflow学习之路 ] —— API:TF-Slim
  13. 哈雷拆分LiveWire上市,冲击美股电摩第一股
  14. linux内核虚拟内存之slub分配器
  15. 体系化数学讲解及Excel实现NN神经网络全流程
  16. iphone原彩显示对眼睛好吗_iPhone x手机原彩显示烧屏怎么办呢
  17. 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage
  18. 大数据破解污染图谱 北风与雾霾啥关系
  19. 米公益完结项目结项反馈——环保梦想,你我一同点亮
  20. Android网络编程之Http请求服务器数据(GET方式)

热门文章

  1. 管理系统中计算机应用第二章,管理系统中计算机应用第二章.doc
  2. OCR系列——总体概述
  3. 浏览器访问pdf 的url怎么加密_怎么解决加密的pdf文件?
  4. go语言html css,html – 在Golang中加载图像和CSS
  5. 【Pytorch神经网络实战案例】22 基于Cora数据集实现图注意力神经网络GAT的论文分类
  6. Django 模板实现(动态)图片/头像展示到页面
  7. git gui怎么拉取项目代码_Git可视化极简易教程 — Git GUI使用方法
  8. python五子棋人机对战_Python:游戏:五子棋之人机对战
  9. python web开发 网络编程 TCP/IP UDP协议
  10. LeetCode MySQL 1633. 各赛事的用户注册率