queue模块
先入先出、先入后出;按优先级

#!/usr/bin/env python # Author:Zhangmingda import queue q = queue.Queue() #先入先出 q.put('A') q.put('B') q.put('C') print(q.get()) print(q.get()) print(q.get())

#!/usr/bin/env python # Author:Zhangmingda import queue q = queue.LifoQueue() #先入后出 q.put('A') q.put('B') q.put('C') print(q.get()) print(q.get()) print(q.get())

#!/usr/bin/env python # Author:Zhangmingda import queue q = queue.PriorityQueue() #优先级策略put内容为元组,第一个为优先级代码,必须全部为数字或者字母 q.put((3,'zhangsan')) q.put((5,'lisi')) q.put((1,'wangwu')) print(q.get()) print(q.get()) print(q.get())
生产者消费者模型

#!/usr/bin/env python # Author:Zhangmingda import threading,time,queue q = queue.Queue(maxsize=10) #创建一个消息队列实例,限制最大容纳的消息总数最多10个 '''生产者函数''' def producer(name): count =0 #消息开始编号 while True: q.put('骨头%s'% count) print('%s生产了第%s个骨头'%(name,count),'当前队列总数:%s'% q.qsize()) count += 1 #区别每个生产的消息 time.sleep(0.5) #控制生产消息的频率 '''消费者函数''' def consumer(name):# while True: print('%s 吃了:%s'%(name,q.get())) time.sleep(1) #控制消费者消费消息的频率 p = threading.Thread(target=producer,args=('Zhangmingda',)) c = threading.Thread(target=consumer,args=('张阳',)) p.start() c.start()

C:\Users\Administrator\Desktop\Python3_study\venv\Scripts\python.exe C:/Users/Administrator/Desktop/Python3_study/day9/生产者消费者模型.py Zhangmingda生产了第0个骨头 当前队列总数:1 张阳 吃了:骨头0 Zhangmingda生产了第1个骨头 当前队列总数:1 Zhangmingda生产了第2个骨头 当前队列总数:2 张阳 吃了:骨头1 Zhangmingda生产了第3个骨头 当前队列总数:2 张阳 吃了:骨头2 Zhangmingda生产了第4个骨头 当前队列总数:2 Zhangmingda生产了第5个骨头 当前队列总数:3 张阳 吃了:骨头3 Zhangmingda生产了第6个骨头 当前队列总数:3 Zhangmingda生产了第7个骨头 当前队列总数:4 张阳 吃了:骨头4 Zhangmingda生产了第8个骨头 当前队列总数:4 Zhangmingda生产了第9个骨头 当前队列总数:5 张阳 吃了:骨头5 Zhangmingda生产了第10个骨头 当前队列总数:5 Zhangmingda生产了第11个骨头 当前队列总数:6 张阳 吃了:骨头6 Zhangmingda生产了第12个骨头 当前队列总数:6 Zhangmingda生产了第13个骨头 当前队列总数:7 张阳 吃了:骨头7 Zhangmingda生产了第14个骨头 当前队列总数:7 Zhangmingda生产了第15个骨头 当前队列总数:8 张阳 吃了:骨头8 Zhangmingda生产了第16个骨头 当前队列总数:8 Zhangmingda生产了第17个骨头 当前队列总数:9 张阳 吃了:骨头9 Zhangmingda生产了第18个骨头 当前队列总数:9 Zhangmingda生产了第19个骨头 当前队列总数:10 张阳 吃了:骨头10 Zhangmingda生产了第20个骨头 当前队列总数:10 Zhangmingda生产了第21个骨头 当前队列总数:10 张阳 吃了:骨头11 Zhangmingda生产了第22个骨头 当前队列总数:10 张阳 吃了:骨头12 Zhangmingda生产了第23个骨头 当前队列总数:10 张阳 吃了:骨头13 Zhangmingda生产了第24个骨头 当前队列总数:10 张阳 吃了:骨头14 Zhangmingda生产了第25个骨头 当前队列总数:10 张阳 吃了:骨头15 Zhangmingda生产了第26个骨头 当前队列总数:10 张阳 吃了:骨头16
执行结果说明:当消息队列不满的时候,就会while循环去生产消息。满了的时候就等着被消费掉(此时生产消息的进程卡主等待状态)再生产。
分类:
python3
posted on 2018-07-01 22:26 zhangmingda 阅读(129) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具