python程序 线程队列queue使用方法解析


Posted in Python onSeptember 23, 2019

一、线程队列

queue队列:使用方法同进程的Queue一样

如果必须在多个线程之间安全地交换信息时,队列在线程编程中尤其有用。

重要:

q.put() :往队列里面放值,当参数block=Ture的时候,timeout参数将会有作用,当队列已经满了的时候,在往里面放值时,block为True程序将会等待timeout的时间,过了时间程序会报错,block如果为Flase时,程序不会等待直接报错

q.get() :从队列里面取值,当参数block=Ture的时候,timeout参数将会有作用,当队列已经空了的时候,在从里面取值时,block为True程序将会等待timeout的时间,过了时间程序会报错,block如果为Flase时,程序不会等待直接报错

q.task_done() :使用者使用此方法发出信号,表示q.get()返回的项目已经被处理。如果调用此方法的次数大于从队列中删除的项目数量,将引发ValueError异常。

q.join() :生产者将使用此方法进行阻塞,直到队列中所有项目均被处理。阻塞将持续到为队列中的每个项目均调用q.task_done()方法为止。

二、线程队列的取值方式

2.1 先进先出

class queue.Queue(maxsize=0)

q = queue.Queue() :不加参数代表队列可以无限的放数据

q = queue.Queue() #不加参数代表队列可以无限的放数据
q.put('Cecilia陈')
q.put('xichen')
print(q.get())
print(q.get())
'''
结果:
Cecilia陈
xichen
'''

2.2 后进先出

class queue.LifoQueue(maxsize=0)

q = Lifo.Queue() :不加参数代表队列可以无限的放数据

q = queue.LifoQueue() #不加参数代表队列可以无线的放数据
q.put('Cecilia陈')
q.put('xichen')

print(q.get())
print(q.get())
'''
结果:
xichen
Cecilia陈
'''

三、队列存数据时可以设置优先级

class queue.priorityQueue(maxsize=0)

q = queue.priorityQueue() :不加参数代表队列可以无限的放数据

3.1 优先级队列

# 3.优先级队列
q = queue.PriorityQueue() #不加参数代表队列可以无线的放数据
#put进入一个元组,元组的第一个元素是优先级(通常是数字,也可以是非数字之间的比较),数字越小优先级越高
q.put((2,'Cecilia陈'))
q.put((1,'xichen'))
q.put((5,'xuchen'))

print(q.get())
print(q.get())
print(q.get())
'''
# 结果(数字越小优先级越高,优先级高的优先出队):
结果:
(1, 'xichen')
(2, 'Cecilia陈')
(5, 'xuchen')
'''

3.2 方法说明

maxsize是一个整数,它设置可以放置在队列中的项数的上限。一旦达到此大小,插入将阻塞,直到使用队列项。如果maxsize小于或等于零,则队列大小为无穷大。

p.put() :放值的时候,放的是一个元组()

exception queue.Empty :异常队列。空:当对空的队列对象调用非阻塞 get() 或 get_nowait() 时引发异常,也就是说队列为空的时候,再取值就会报错

exception queue.Full :异常队列。Full:当对已满的队列对象调用非阻塞put() 或 put_nowait() 时引发异常。也就是说当队列已满的时候,再往里面当值的时候将会报错

Queue.qsize () :

empty() :如果为空,返回True

Queue.full() :如果已满,返回True

put_nowait(item) :等同于put(item, False)。

get_nowait() :等同于get(False)。

提供了两种方法来支持跟踪已加入队列的任务是否已被守护进程使用者线程完全处理:

task_done() :表示以前加入队列的任务已经完成。由队列使用者线程使用。对于用于获取任务的每个get(),后续对task_done()的调用告诉队列任务上的处理已经完成。如果join(当前处于阻塞状态,那么在处理完所有项之后,它将继续运行(这意味着对于已经放入队列()的每个项,都收到了task_done()调用)。

如果调用次数超过放置在队列中的项的次数,则引发ValueError。

Queue.join() :块直到队列被消费完毕。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python两种遍历字典(dict)的方法比较
May 29 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
Nov 21 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
详解PyTorch中Tensor的高阶操作
Aug 18 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
django haystack实现全文检索的示例代码
Jun 24 Python
python程序 创建多线程过程详解
Sep 23 #Python
详解python播放音频的三种方法
Sep 23 #Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 #Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 #Python
Python3 pandas 操作列表实例详解
Sep 23 #Python
详解基于python-django框架的支付宝支付案例
Sep 23 #Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 #Python
You might like
福利彩票幸运号码自动生成器
2006/10/09 PHP
PHP提取中文首字母
2008/04/09 PHP
php表单提交问题的解决方法
2011/04/12 PHP
thinkphp框架实现数据添加和显示功能
2016/06/29 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
arguments对象
2006/11/20 Javascript
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
jquery实现动态画圆
2014/12/04 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
Node.js API详解之 tty功能与用法实例分析
2020/04/27 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
Python with语句和过程抽取思想
2019/12/23 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
Keras实现DenseNet结构操作
2020/07/06 Python
python中判断文件结束符的具体方法
2020/08/04 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
保荐人的岗位职责
2013/11/19 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python