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())
queue先入先出
复制代码
复制代码
#!/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())
queue先入后出
复制代码
复制代码
#!/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循环去生产消息。满了的时候就等着被消费掉(此时生产消息的进程卡主等待状态)再生产。

posted on   zhangmingda  阅读(129)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· 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工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示