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小程序第0步:导入工具库第一步:生成查询天气的url链接第二步:访问url链接,解析服务器返回的json数据,变成pyt
- 本文实例讲述了Go语言图片处理和生成缩略图的方法。分享给大家供大家参考。具体实现方法如下:package mainimport (
- 代码很简单,功能也很简单 =w=webpage2pdf#!/usr/bin/env python3import systry: from P
- 1、新建链接服务器 在图1中选中“链接服务器”,右键选择“新建链接服务器”,如图2,配置相关参数。2、配置相关参数在“常规”选项中
- 直接上代码:#!/usr/bin/python # Filename s5.py # Python Dynamic Socks5 Proxy
- 今天给大家分享腾讯云的实名认证接口的调用点击免费获取产品from __future__ import print_functionimpor
- 对比起Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制。由于 Session 是以
- QZONE平台的相册功能为保证加载速度一直以来以简洁的图片排列查看模式呈现相片,随着市场上各类相册产品推陈出新,用户越来越强烈的要求个人相册
- 首先,来说一下对话框: 对话框在Windows应用程序中使用非常普遍,许多应用程序的设定,与用户交互需要通过对话框来进行,因此对话框是Win
- 介绍Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
- 本文实例讲述了Python实现合并excel表格的方法。分享给大家供大家参考,具体如下:需求将一个文件夹中的excel表格合并成我们想要的形
- by leecade :我聊下我的想法 从功能上看,能不能把JS分成3层结构1 语法设计,选择器,常用函数2 业务逻辑(比如封装好常用的TA
- 在本章中,我们将详细讨论对称和非对称密码术.对称密码术在此类型中,加密和解密进程使用相同的密钥.它也被称为秘密密钥加密.对称加密的主要特征如
- 本文实例讲述了python实现string和dict的相互转换方法。分享给大家供大家参考,具体如下:字典(dict)转为字符串(string
- 生活中有很多需要用到关联图的地方,至少我认为的是这样的图:https://www.echartsjs.com/examples/zh/edi
- 如下所示:# ### 多项分支'''<br>if 条件表达式1: code1
- 还有多少耿直boy和我一样在等待微信官方送上一顶圣诞帽?最后知道真相的我眼泪掉下来……(还蒙在鼓里的同学请在微信最上方的搜索栏自行搜索『圣诞
- 如何在数据库中限制检索行数?为了照顾显示器屏幕的大小,使检索结果更整齐明了一些,请问,可以控制数据库的检索行数吗? &
- 1. 安装PyYAMLpip install PyYAML2. 加载yaml文件直接使用yaml.load()函数demo.yml :kin