Python中线程安全队列Queue的示例分析
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,小编给大家分享一下Python中线程安全队列Queue的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、什么是队列?像排队一样,从头到尾排成一排,还可以有人继续往后排队,这
千家信息网最后更新 2025年01月20日Python中线程安全队列Queue的示例分析
小编给大家分享一下Python中线程安全队列Queue的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
一、什么是队列?
像排队一样,从头到尾排成一排,还可以有人继续往后排队,这就是队列。
这里学委想说的是Queue
这个类, 它是queue
这个内置模块内的一个类。
import queueq = queue.Queue(5) #可以传入参数指定队列大小queue.Queue()# 不传或者给0或者<0的数字则创建一个无限长度的队列
它提供了很多函数,下面几个函数,我们使用的比较多:
get
: 获取并移除队头元素,就是出队put
: 往队列末尾加入元素,也就是后来者排队qsize
: 获取队列的长度empty
: 队列空了,没有人在排了full
: 队列满了。
看着比较枯燥,学委画了下图展示:
这个队列put了3次,依次放入:持续学习,持续开发,我雷学委。队列长度为3
二、队列基操 入队/出队/查队列状态
准备了下面的代码:
import queueq = queue.Queue(5)print("学委粉丝队列:", q)print("空队,学委粉丝队列大小:", q.qsize())print("空队列?", q.empty())for i in range(5): q.put(i)print("队列满了?", q.full())print("排满了,学委粉丝队列大小:", q.qsize())while not q.empty(): print("粉丝 %s 出队点赞!" % q.get())print("最后,学委粉丝队列大小:", q.qsize())
这段代码创建了一个长的为5的队列。
然后一个循环写满队列,接着再依此出队,粉丝出队点赞。
下面是运行效果:
是不是很简单。
三、Queue是一个线程安全的类
前面几篇文章,碰到下面的代码(反复读写共享变量)结果总是出乎依赖!
amount = 100def transfer(money): global amount for i in range(100000): amount += money
如果我们对队列进行反复读写,会不会出现问题呢?
不妨,写个代码验收一下:
import queueimport threadingxuewei_fans_q = queue.Queue()def transfer(money): for i in range(100000): xuewei_fans_q.put(money) xuewei_fans_q.get()# 创建4个任务重复给学委加关注/脱粉(还是希望各位编程的明日之星跟着学习,共同进步!)t_group = []for i in range(10): t = threading.Thread(target=lambda: transfer(-1)) t_group.append(t) t.start() t = threading.Thread(target=lambda: transfer(1)) t_group.append(t) t.start() t = threading.Thread(target=lambda: transfer(-1)) t_group.append(t) t.start() t = threading.Thread(target=lambda: transfer(1)) t_group.append(t) t.start()for t in t_group: t.join()print("-" * 16)print("活跃线程数:", threading.active_count())print("活跃线程:", threading.current_thread().name)#反复对队列进行添加数据,移除数据,队列最后清零了print("学委粉丝队列:", xuewei_fans_q.qsize())
不管运行多少次,队列(希望是黑粉队列)都为0元素。
看完了这篇文章,相信你对"Python中线程安全队列Queue的示例分析"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
队列
粉丝
线程
代码
大小
安全
元素
篇文章
长度
示例
分析
函数
就是
数据
面的
学习
运行
枯燥
从头到尾
下图
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
客户说软件开发价格高
网络安全就业方向知乎
河南潮流软件开发过程参考价格
软件开发外包可靠吗
软件开发是商业企业吗
分布数据库有什么特点
奉贤区一站式数据库活动简介
服务器账户的高级管理
虚拟网络服务器如何关闭远程端口
网络科技还是网络技术
宝山区个人软件开发诚信为本
360浏览器 本地数据库
查询数据库时间制定格式
在数据库中set什么意思
微信数据库定时生成报表
西安市新城区鹏琳网络技术工作室
adodc查询数据库中数据
河南服务器电源怎么卖
学计算机网络技术可以去当兵
信客网络技术
提高让网络安全
颐互联网科技
客户数据库的功能包括哪些
计算机网络技术基础答案周舸
mysql数据库整体加密
微软服务器操作系统可以装ps吗
开电竞酒店要服务器吗
数据库删除某个值为1的语句
新招网络安全师
宁夏浪潮服务器维修维保