Python queue模块功能大全
作者:让你五行代码 发布时间:2023-02-23 23:42:27
queue模块简介
queue模块是Python内置的标准模块,模块实现了三种类型的队列,它们的区别仅仅是条目取回的顺序,分别由3个类进行表示,Queue,LifoQueue,PriorityQueue
queue模块是Python内置的标准模块,可以直接通过import queue引用。在Queue模块中提供了三种同步的、线程安全的队列,分别由三个类Queue,LifoQueue和PriorityQueue表示,它们的唯一区别是元素取出的顺序不同。并且LifoQueue和PriorityQueue都是Queue的子类。
1. Queue(FIFO队列)
Queue类表示一个基本的FIFO(First In First Out)队列,即先进先出。创建方法是Queue.Queue(maxsize=0),其中maxsize是个整数,指明了队列中能存放的数据个数的上限。以下是一个使用Queue的示例。
from queue import Queue
queue_object = Queue()
for i in range(4):
queue_object.put(i)
while not queue_object.empty():
print(queue_object.get())
上例中将4个数字放在了Queue队列中,然后依次取出它的元素值。它的运行结果如下:
0
1
2
3
2. LifoQueue(LIFO队列)
LifoQueue类表示后进先出队列(Last in First Out),与栈类似,都是后进入的元素先出来。创建方法也很简单,使用Queue.LifoQueue(maxsize=0)即可,其中maxsize的含义与Queue类相同。以下是一个使用LifoQueue的示例:
from queue import LifoQueue
lifo_queue = LifoQueue()
for i in range(4):
lifo_queue.put(i)
while not lifo_queue.empty():
print(lifo_queue.get())
上例同样将4个数字放在了LifoQueue中,但取出元素的顺序与Queue相反,最后放入的元素最先被取出。运行结果如下:
3
2
1
0
3. PriorityQueue(优先级队列)
PriorityQueue类表示优先级队列,按级别顺序取出元素,级别最低的最先取出。优先级队列中的元素一般采取元组(优先级别,数据)的形式来存储。创建方法同样是Queue.PriorityQueue(maxsize=0)。以下是一个使用PriorityQueue的示例:
from queue import PriorityQueue
class Job(object):
def __init__(self, level, description):
self.level = level
self.description = description
return
def __lt__(self, other):
return self.level < other.level
priority_queue = PriorityQueue()
priority_queue.put(Job(5, '中级别工作'))
priority_queue.put(Job(10, '低级别工作'))
priority_queue.put(Job(1, '重要工作'))
while not priority_queue.empty():
next_job = priority_queue.get()
print('开始工作:', next_job.description)
在上例中,将任务Job存入PriorityQueue中,每个Job都有一个优先级level,level值越低则代表的优先级越高。在调用get方法时,按照优先级从高到低的顺序从队列中取出元素。
它的运行结果如下:
开始进行: 重要工作
开始进行: 中级别工作
开始进行: 低级别工作
除此之外,在Queue模块中还定义了2个异常类,如下所示:
·Empty:当从空队列中取数据时,可抛出此异常。
·Full:当向一个满队列中存数据时,可抛出此异常。
来源:https://blog.csdn.net/zy1992As/article/details/130250181
猜你喜欢
- 游戏说明:一个考验您记忆力的游戏,只要两个方块的;图案能够凑成一对,最终翻开所有的图片,那么您就获胜,计算机将自动记录您的游戏时
- Python 类Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用
- 一:PIL功能介绍与安装PIL,全称Python Image Library,主要作用是图像处理,可用于图片剪切、粘贴、缩放、镜像、水印、颜
- <!doctype><html><head><title>新闻图片轮换类</title
- 前言因为NLP作业需要用到kenlm,而kenlm在linux下更为方便。本人win10之前开启了子系统,所以就打算在子系统下进行相关作业的
- 查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2、I/O吞吐量小,形成了瓶颈效
- 在这篇文章中,我们将讨论mask R-CNN背后的一些理论,以及如何在PyTorch中使用预训练的mask R-CNN模型。1.语义分割、目
- 链表的反转是一个很常见、很基础的数据结构题,输入一个单向链表,输出逆序反转后的链表,如图:上面的链表转换成下面的链表。实现链表反转有两种方式
- 代码如下:'************************************ '截取文字长度函数,支持UT
- python中关于删除list中的某个元素,一般有三种方法:remove、pop、del:1.remove: 删除单个元素,删除首个符合条件
- 本文实例讲述了Python线程threading模块用法。分享给大家供大家参考,具体如下:threading-更高级别的线程接口源代码:Li
- 本文实例讲述了Django框架会话技术。分享给大家供大家参考,具体如下:会话技术1、Cookie客户端会话技术(数据存储在客户端)以key-
- pytorch里面的maxpool,有一个属性叫ceil_mode,这个属性在api里面的解释是ceil_mode: when True,
- 本文研究的主要是python处理csv数据动态显示曲线,分享了实现代码,具体如下。代码:# -*- coding: utf-8 -*- &q
- 旁站查询来源:http://dns.aizhan.comhttp://s.tool.chinaz.com/samehttp://i.link
- 在构建模型时,调参是极为重要的一个步骤,因为只有选择最佳的参数才能构建一个最优的模型。但是应该如何确定参数的值呢?所以这里记录一下选择参数的
- 一、如果models.py文件为时:timestamp = models.DateTimeField('保存日期')会提示:
- 1. 用qt designer编写主窗体,窗体类型是MainWindow,空白窗口上一个按钮。并转换成mainWindow.py# -*-
- 如果 replaceText 为函数,对于每一个匹配的子字符串,调用该函数时带有下面的 m+3 个参数,此处 m 是在 rgExp 中捕获的
- 将一个 awk 脚本移植到 Python 主要在于代码风格而不是转译。脚本是解决问题的有效方法,而 awk 是编写脚本的出色语言。它特别擅长