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时间整形转标准格式的示例分享
Feb 14 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
python实现发送form-data数据的方法详解
Sep 27 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
python统计字符的个数代码实例
Feb 07 Python
Django model.py表单设置默认值允许为空的操作
May 19 Python
深入了解Python 变量作用域
Jul 24 Python
Python如何执行系统命令
Sep 23 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
php入门教程 精简版
2009/12/13 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
PHP new static 和 new self详解
2017/02/19 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
jQuery Ajax 实例全解析
2011/04/20 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
序列化Python对象的方法
2020/08/01 Python
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
酒店保洁主管岗位职责
2013/11/28 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
房屋维修申请报告
2015/05/18 职场文书
委托收款证明
2015/06/23 职场文书
人民币使用说明书
2019/04/17 职场文书
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers