当前位置: 首页 > news >正文

python内置模块之queue(队列)用法

queue是python3的内置模块,创建堆栈队列,用来处理多线程通信,队列对象构造方法如下:

queue.Queue(maxsize=0)

是先进先出(First In First Out: FIFO)队列。

入参 maxsize 是一个整数,用于设置队列的最大长度。一旦队列达到上限,插入数据将会被阻塞,直到有数据出队列之后才可以继续插入。如果 maxsize 设置为小于或等于零,则队列的长度没有限制。

主要方法有如下几个:

  • qsize():返回队列中数据元素的个数。
  • empty():如果队列为空,返回 True,否则返回 False。
  • full():如果队列中元素个数达到上限,返回 True,否则返回 False。
  • put(item, block=True, timeout=None):
    • item,放入队列中的数据元素。
    • block和timeout参数,当队列中元素个数达到上限继续往里放数据时:
      • 如果 block=False,直接引发 Full 异常;
      • 如果 block=True,且 timeout=None,则一直等待直到有数据出队列后可以放入数据;
      • 如果 block=True,且 timeout=N,N 为某一正整数时,则等待 N 秒,如果队列中还没有位置放入数据就引发 Full 异常。timeout,设置超时时间。
  • put_nowait(item)相当于 put(item, block=False),当队列中元素个数达到上限继续往里放数据时直接引发 Full 异常。
  • get(block=True, timeout=None):从队列中取出数据并返回该数据内容。
    • block,当队列中没有数据元素继续取数据时:
      • 如果 block=False,直接引发Empty 异常;
      • 如果 block=True,且 timeout=None,则一直等待直到有数据入队列后可以取出数据;
      • 如果 block=True,且 timeout=N,N 为某一正整数时,则等待 N 秒,如果队列中还没有数据放入的话就引发 Empty 异常。timeout,设置超时时间。
  • get_nowait():相当于 get(block=False)block,当队列中没有数据元素继续取数据时直接引发 Empty 异常。

简单使用示例

import queue
q = queue.Queue()  # 创建 Queue 队列
for i in range(3):q.put(i)  # 在队列中依次插入0、1、2元素
for i in range(3):print(q.get())  # 依次从队列中取出插入的元素,数据元素输出顺序为0、1、2

end

http://www.lryc.cn/news/373102.html

相关文章:

  • Spring Security——结合JWT实现令牌的验证与授权
  • Vector的底层结构剖析
  • 实现抖音视频滑动功能vue3+swiper
  • Linux文件系统【真的很详细】
  • JAVA学习笔记DAY5——Spring_Ioc
  • WPF中的隧道路由和冒泡路由事件
  • ISO七层模型 tcp/ip
  • MySQL的三种重要的日志
  • 神经网络学习2
  • Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟队列
  • Android入门第69天-AndroidStudio中的Gradle使用国内镜像最强教程
  • 深入浅出 Qt 中 QListView 的设计思想,并掌握大规模、高性能列表的实现方法
  • 课设--学生成绩管理系统
  • MySQL性能分析
  • 为什么要学习Flink系统管理及优化课程?
  • 把本机的bash构建到docker镜像里面
  • 【数据分析】推断统计学及Python实现
  • 探索交互的本质:从指令到界面的演进与Linux基础指令的深入剖析
  • uniapp vue分享功能集成
  • 软件工程实务:软件产品
  • 带侧边栏布局:带导航的网页
  • react学习-redux快速体验
  • 基于flask的网站如何使用https加密通信-问题记录
  • 记C#优化接口速度过程
  • windows环境如何运行python/java后台服务器进程而不显示控制台窗口
  • 记周末百度云防御CC攻击事件
  • vue中v-bind控制class和style
  • 【面试经典150题】【双指针】392. 判断子序列
  • 禁用PS/Photoshop等一系列Adobe旗下软件联网外传用户数据操作
  • C语言猜输赢游戏