python中的queue模块提供了同步的、线程安全的队列类,包括FIFO(先进先出)的Queue类和LIFO(后进先出,栈结构)LifoQueue类和优先队列PriorityQueue类,它们都实现了锁原语(可以理解为原子操作,要么不做,要么就全部做完),解决了python多线程编程中的线程不安全。

队列与列表的区别

队列中数据只有一份,取出就没有了,列表数据取出只是复制了一份

1、初始化一个队列

Queue(maxsize=0) 或者

LifoQueue(maxsize=0) 或者

PriorityQueue(maxsize=0)

maxsize是个整数,指明了队列中能存放的数据个数上限。一旦达到上限,插入会导致阻塞,直到队列中有数据被取出。如果maxsize<=0,队列大小没有限制

2、qsize():获取队列当前数据的数量

3、empty():判断队列是否为空

4、full():判断队列是否满

5、get(block=True, timeout=None):从队列中取出一个数据

block:是否阻塞调用,

阻塞调用如果队列为空会一直阻塞直到队列中放入数据

非阻塞调用时队列已空抛出Empty异常

如果设置了timeout超时时间并且发生超时抛出Empty异常

get_nowait()为非阻塞取出数据,等同于get(block=False)

6、put(item, block=True, timeout=None):讲一个数据放入到队列中

阻塞调用如果队列已满会一直阻塞直到队列中取出数据

非阻塞调用时队列已满抛出Full异常

如果设置了timeout超时时间并且发生超时抛出Full异常

put_nowait(item)为非阻塞取出数据,等同于put(item,block=False)

7、queue.clear():清空队列

8、task_done():意味着从队列中取出的一个任务已经完成。每一次调用get()得到一个任务,接下来的task_done()调用告诉队列该任务已经处理完毕。如果当前一个join()正在阻塞,它将在队列中的所有任务都处理完时恢复执行(即每一个由put()调用入队的任务都有一个对应的task_done()调用)。

9、join():阻塞调用线程,直到队列中的所有任务被处理掉。只要有数据被加入队列,未完成的任务数就会增加。当调用task_done(),未完成的任务数就会减少。当未完成的任务数降到0,join()解除阻塞。

优先队列:优先队列不同于先进先出或后进先出,它是出的规则和进入的顺序无关,只和数据的优先级有关,优先级小的数据先出,在put()的时候item需要传入一个二元元祖,第一个元素是一个正整数,表示优先级,第二个元素是放入的数据,优先级的数字可以重复,同等优先级的数据遵循先进先出的原则。

最后编辑:2020-04-06作者:qingheluo

这个作者貌似有点懒,什么都没有留下。

python 队列实现_python中实现队列的queue模块相关推荐

  1. python os 文件锁_python 中给文件加锁——fcntl模块

    如果没有fcntl模块则用 sudo pip install fcntl安装 模块简单说明: 打开文件,不存在则创建之 f = open('./test','w') fcntl.flock(f,fcn ...

  2. python优先级排序_Python实现优先级队列结构的方法详解

    最简单的实现一个队列至少满足2个方法,put和get. 借助最小堆来实现. 这里按"值越大优先级越高"的顺序. #coding=utf-8 from heapq import he ...

  3. python多线程队列处理_Python线程和队列使用的一点思考

    Python线程和队列使用的一点思考 1. 斗哥采访环节请问为什么要使用线程? 答:为了提高程序速度,代码效率呀. 请问为什么要使用队列? 答:个人认为队列可以保证线程安全,实现线程间的同步,比较稳. ...

  4. python队列溢出_python – 多处理队列maxsize限制是32767

    我正在尝试使用多处理编写Python 2.6(OSX)程序,并且我想填充一个超过默认值32767项的Queue. from multiprocessing import Queue Queue(2** ...

  5. python去除空行_python中去掉空行的问题

    在python中处理空行时,经常会遇到一些问题.现总结经验如下: 1.遇到的空行如果只有换行符,直接使用=='\n'或者 len(line)==line.count('\n') 2.有多个空格+换行符 ...

  6. python销毁线程_Python 中的线程

    封面图片来源:沙沙野 线程线程与进程的联系:都是为了解决并发 线程与进程的区别:进程:计算机中最小的资源分配单位 线程:进程中的一员,同一个进程之间的几个线程共享一个进程的资源 线程可以直接被CPU调 ...

  7. python modbus类封装_Python 中引入一个文件,模块的概念

    Python 提供了强大的模块支持,主要体现在,不仅 Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块. 通过这些强大的模块可以极大地提高开 ...

  8. python map用法_Python中ChainMap的一种实用用法

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 简而言之ChainMap:将多个字典视为一个,解锁Python超能力. Python标准库中的集合模块包含 ...

  9. python基本统计量_Python中简单统计量的计算

    本篇文章给大家带来的内容是关于Python中简单统计量的计算,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.这些操作都要确保已经在电脑中安装好了Anaconda集成库,如果安装好 ...

最新文章

  1. php -- 读取大文件
  2. Apache 超详细编译参数解析
  3. Nginx的虚拟主机配置
  4. Sharding-JDBC改写自己查询规则思路
  5. 如何在Dev-Cpp中使用C++11中的函数:stoi、to_string、unordered_map、unordered_set、auto
  6. 简单机器学习系统的构建以及对于不对称性的分类介绍和性能评价
  7. $.ajax+php实战教程之下拉时自动加载更多文章原理分析
  8. python隐藏窗口_python中隐藏Console窗口
  9. c语言逻辑运算符的作用,C语言逻辑运算符知识整理
  10. Oauth2认证图解
  11. 考研政治|马克思主义基本原理
  12. STM32 内部flash 数据掉电存储
  13. SSB基准测试-ClickHouse
  14. 嘀嘀的费用是优步的两倍?
  15. 【送你一张门票】七牛云带你去看杭州云栖大会
  16. A*算法理解(unity C#)
  17. linux学习笔记:06-ubuntu中挂载U盘
  18. opencv-图像修补,图像修复,inpaint
  19. 0x0B-HackTheBox-Obscurity
  20. 长寿命激光在线测径仪 关键看细节

热门文章

  1. 21闭关修炼 习题分册
  2. 让地震预警更快、更准,人工智能助力城市应急管理
  3. 关于edu邮箱收不到国外投稿邮件的解决办法
  4. 用正则表达式将文字转换成表情图片
  5. 在Android系统中使用系统自带的emoji表情
  6. 自然数幂和伯努利数(Bernoulli)
  7. cij期刊_核心期刊评价与文献计量学研究CJournalJLX
  8. 让知识构建未来—知识图谱技术与应用 | AI TIME-33
  9. 现代职业教育杂志现代职业教育杂志社现代职业教育编辑部2022年第27期目录
  10. 微服务(Microservice)那点事