队列模块(Queue)

#!/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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++学习——构造函数,析构函数与虚函数关系

文章目录1.构造函数,析构函数可以为虚函数吗?2.析构函数和构造函数的作用?3.构造函数和析构函数调用顺序?4.类什么时候会调用析构函数?1.构造函数,析构函数可以为虚函数吗? 构造函数不可以&…

军事大脑的构建对未来战争的影响

前言:本文是我与军事科学院的赵蔚婷,王婉两位老师在2020年4月发表的一篇论文,首发在《中国科技论文在线》,是将互联网大脑模型与军事领域结合,形成军事大脑和军事超级智能的概念体系,重点提出军事神经元和军事云反射弧…

00001-整数倒置-Java-leetcode-要考虑到溢出问题

leetcode-整数倒置 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-integer 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给出一个 32 位的有符号整数,你需…

size - 列出段节大小和总共大小

总览 (SYNOPSIS) size[-A|-B|--formatcompatibility] [--help] [-d|-o|-x|--radixnumber] [--targetbfdname] [-V|--version] objfile...描述 (DESCRIPTION) GNU 的 size 程序 列出 参数列表 objfile 中, 各 目标文件(object) 或 存档库文件(archive) 的 段节(section)大小 ---…

C++学习——默认构造函数

默认构造函数在这篇博客中已经写得很明白。 https://blog.csdn.net/bear_n/article/details/72798301 文章目录1.什么是默认构造函数?2.什么情况会自动生成默认构造函数,即编译器生成默认构造函数?1.什么是默认构造函数? 默认构造…

斯坦福抢开“元宇宙”第一课,上起来还真不便宜

过去半个世纪,斯坦福教给学生的技术,促成了硅谷的诞生;而为了将来的 Web3 时代,斯坦福也已经做好了准备。来源: 硅星人文:杜晨 编辑:VickyXiao今年10月底,硅谷顶级科技公司 Facebo…

00002-两数之和-leetcode-1.暴力法(枚举法),2.哈希表法,目前更新了枚举法

两数之和 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 给定一个整数数组 nums 和一个目标值 target,请你在…

c++ 字符串转数字

#字符串转整数 string ss"-99"; cout<< stoi(ss)<<endl; 转载于:https://www.cnblogs.com/sea-stream/p/11100398.html

C++学习——抽象类

文章目录1.抽象类1.1 什么是抽象类&#xff1f;1.2 抽象类的作用?1.3 使用抽象类时注意2.抽象基类为什么不能创建对象&#xff1f;1.抽象类 1.1 什么是抽象类&#xff1f; 带有纯虚函数的类为抽象类 1.2 抽象类的作用? 抽象类的主要作用是将有关的操作作为结果接口组织在一个…

00003-回文数的判定-leetcode-解法不唯一,1.reverse最简单,2.数学方法很有意思

回文数的判定 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode-cn.com/problems/palindrome-number 著作权归领扣网络所有。商业转载请联系官方授权&#xff0c;非商业转载请注明出处。 判断一个整数是否是回文数。回文数是指正序&…

加拿大工程院院士于非:互联—— 从质量、能源、信息到智能

来源&#xff1a;AI科技评论整理&#xff1a;莓酊编辑&#xff1a;青暮2021年12月9日&#xff0c;第六届全球人工智能与机器人大会&#xff08;GAIR 2021&#xff09;在深圳正式启幕。140余位产学领袖、30位Fellow聚首&#xff0c;从AI技术、产品、行业、人文、组织等维度切入&…

常用命令之------ln

当我们需要在不同的目录&#xff0c;用到相同的文件时&#xff0c;我们不需要在每一个需要的目录下都放一个必须相同的文件&#xff0c;我们只要在某个固定的目录&#xff0c;放上该文件&#xff0c;然后在 其它的目录下用ln命令链接&#xff08;link&#xff09;它就可以&…

C++学习——继承

文章目录1.C中类成员的访问权限和继承权限问题2.多继承的优缺点3. 继承机制中对象之间如何转换4.组合与继承优缺点1.C中类成员的访问权限和继承权限问题 三种访问权限 public:用该关键字修饰的成员表示公有成员&#xff0c; 该成员不仅可以在类内可以被访问&#xff0c;在类外…

00004-括号匹配问题-牛客网-要考虑各种情况

括号匹配问题 链接&#xff1a;https://ac.nowcoder.com/acm/contest/3530/E 来源&#xff1a;牛客网 众所周知&#xff0c;佳爷是集训队最强&#xff0c;他经常喜欢鄙视集训队最菜的PC&#xff0c;这天他又来了&#xff0c;他丢给PC一道题目&#xff1a; 给你一个字符串&am…

2021年诺贝尔经济学奖评述:解决重大社会问题的自然实验因果框架

来源&#xff1a;集智俱乐部作者&#xff1a;诺奖委员会译者&#xff1a;邓宇昊 编辑&#xff1a;邓一雪 导语许多重大社会问题都涉及到因果分析。比如&#xff0c;接受更长时间的教育是否会让你未来的收入增加&#xff1f;提高最低工资对一个地方的就业会产生怎样的影响&…

C++学习——拷贝构造函数和移动构造函数

文章目录1.拷贝构造函数2.移动构造函数1.拷贝构造函数 拷贝构造函数&#xff0c;它是一种特殊的构造函数。它的作用就是用一个已经生成的对象来初始化另一个同类的对象。 当类中拥有指针类型的成员变量时&#xff0c;拷贝构造函数中需要以深拷贝&#xff08;而非浅拷贝&#xf…

spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)

spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service.impl;import com.itheima.service.IAccountService;import java.util.Arrays; import java.util.List; import java.util.Pr…

溯因推理:人工智能的盲点

来源&#xff1a;AI前线作者&#xff1a;Ben Dickson译者&#xff1a;Sambodhi策划&#xff1a;凌敏本文给当今人工智能界推崇深度学习的现象泼了冷水&#xff0c;指出了人工智能的盲点&#xff1a;溯因推理&#xff0c;并提醒人们不要忽视深度学习的种种问题&#xff0c;否则将…

Python Django项目部署 Linux 服务器

项目依赖: Linux Centos7 (阿里云轻量级服务器) Python 3.7.2 Django 2.2.1 restframework 3.9.4 mysql 5.7 1 安装 python3 到 Centos7&#xff0c; 先安装软件管理包和可能使用的依赖 yum -y groupinstall "Development tools" yum install openssl-devel bzip…

C++学习——C++中的四种类型转换

文章目录1.dynamic_cast2.const_cast3.3 static_cast3.4 reinterpret_cast1.dynamic_cast 用于动态类型转换。只能用于含有虚函数的类&#xff0c;用于类层次间的向上和向下转化。只能转指针或引用。向下转化时&#xff0c;如果是非法的对于指针返回NULL&#xff0c;对于引用抛…