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 20 Python
python base64 decode incorrect padding错误解决方法
Jan 08 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
python实现贪吃蛇小游戏
Mar 21 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
python logging日志模块原理及操作解析
Oct 12 Python
使用python制作一个解压缩软件
Nov 13 Python
Keras搭建自编码器操作
Jul 03 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 Python
使用python如何删除同一文件夹下相似的图片
May 07 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
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
javascript常用函数(1)
2015/11/04 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
Python实现多线程抓取妹子图
2015/08/08 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
大学生毕业自荐信
2013/10/10 职场文书
成人毕业生自我鉴定
2013/10/18 职场文书
外语专业毕业生个人的自荐信
2013/11/19 职场文书
工厂见习报告范文
2014/10/31 职场文书
学生自我评语
2015/01/04 职场文书
党员公开承诺书2015
2015/01/21 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
开学第一天的感想
2015/08/10 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
快速学习Oracle触发器和游标
2021/06/30 Oracle
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android