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中的文件和目录操作实现代码
Mar 13 Python
跟老齐学Python之不要红头文件(2)
Sep 28 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
Oct 17 Python
Python列表list排列组合操作示例
Dec 18 Python
学生信息管理系统Python面向对象版
Jan 30 Python
python写入文件自动换行问题的方法
Jul 05 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
使用Pycharm分段执行代码
Apr 15 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
pytorch锁死在dataloader(训练时卡死)
May 28 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
JavaScript toFixed() 方法
2010/04/15 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
python抓取最新博客内容并生成Rss
2015/05/17 Python
Python3 socket同步通信简单示例
2017/06/07 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
奥运会口号
2014/06/13 职场文书
学雷锋宣传标语
2014/06/25 职场文书
小学教师师德整改措施
2014/09/29 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
婚礼父母答谢词
2015/01/04 职场文书
家长学校教学计划
2015/01/19 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
MySQL 存储过程的优缺点分析
2021/05/20 MySQL