内容简介:Python3 queue队列模块详解
queue介绍
queue是 python 中的标准库,俗称队列。
在python中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够保证数据的安全性和一致性,所以当多个线程需要进行数据交换的时候,队列就出现了,队列可以完美解决线程间的数据交换,保证线程间数据的安全性和一致性。
注意: 在python2.x中,模块名为Queue
queue模块有三种队列及构造函数
Python queue模块的FIFO队列先进先出。 queue.Queue(maxsize)
LIFO类似于堆,即先进后出。 queue.LifoQueue(maxsize)
还有一种是优先级队列级别越低越先出来。 queue.PriorityQueue(maxsize)
queue模块中的常用方法
queue.qsize() 返回队列的大小
queue.empty() 如果队列为空,返回True,反之False
queue.full() 如果队列满了,返回True,反之False
queue.full 与 maxsize 大小对应
queue.get([block[, timeout]])获取队列,立即取出一个元素, timeout超时时间
queue.put(item[, timeout]]) 写入队列,立即放入一个元素, timeout超时时间
queue.get_nowait() 相当于queue.get(False)
queue.put_nowait(item) 相当于queue.put(item, False)
queue.join() 阻塞调用线程,直到队列中的所有任务被处理掉, 实际上意味着等到队列为空,再执行别的操作
queue.task_done() 在完成一项工作之后,queue.task_done()函数向任务已经完成的队列发送一个信号
代码实例
以下代码在Python3下通过
创建队列
import queue q = queue.Queue()
empty方法(如果队列为空,返回True)
import queue q = queue.Queue() print(q.empty()) #输出:True
full方法(如果队列满了,返回True)
import queue q = queue.Queue(1) #指定队列大小 q.put('a') print(q.full()) #输出:True
put方法和get方法
import queue q = queue.Queue() q.put('a') q.put('b') print(q.get()) #输出:a
qsize方法(返回队列里元素个数)
import queue q = queue.Queue() q.put('a') q.put('b') print(q.qsize()) #输出:2
queue模块在上一篇文章《 Python3多线程爬虫实例讲解 》中使用到了,大家也可以结合这篇爬虫多线程文章深入理解queue。
以上所述就是小编给大家介绍的《Python3 queue队列模块详解》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- TCP SYN队列与Accept队列详解
- rabbitmq死信队列详解与使用
- Redis 实现队列原理的实例详解
- 数据结构 1 线性表详解 链表、 栈 、 队列 结合JAVA 详解
- JS异步详解 - 浏览器/Node/事件循环/消息队列/宏任务/微任务
- rabbitmq实现延时队列(死信队列)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python网络编程(第3版)
[美] Brandon Rhodes、[美] John Goerzen / 诸豪文 / 人民邮电出版社 / 2016-9 / 79.00元
本书针对想要深入理解使用Python来解决网络相关问题或是构建网络应用程序的技术人员,结合实例讲解了网络协议、网络数据及错误、电子邮件、服务器架构和HTTP及Web应用程序等经典话题。具体内容包括:全面介绍Python3中最新提供的SSL支持,异步I/O循环的编写,用Flask框架在Python代码中配置URL,跨站脚本以及跨站请求伪造攻击网站的原理及保护方法,等等。一起来看看 《Python网络编程(第3版)》 这本书的介绍吧!
HTML 压缩/解压工具
在线压缩/解压 HTML 代码
UNIX 时间戳转换
UNIX 时间戳转换