queue队列消费者生产者测试
2024-09-06 01:28:34
from multiprocessing import JoinableQueue
from threading import Thread def worker(q):
while True:
try:
item = q.get()
print(item)
if item % 5 == 0:
if item == 5:
time.sleep(20)
q.put(111)
q.task_done()
except Exception as e:
print(e) q = JoinableQueue() import time
def customer(q):
for i in range(100):
try:
q.put(i)
except Exception as e:
print(e)
ct = Thread(target=customer, name='customer', args=(q,))
ct.daemon = True
ct.start()
ct.join()
for i in range(4):
t = Thread(target=worker, name='worker'+str(i), args=(q,))
t.daemon = True
t.start() q.join()
print('end')
一旦消费者速度快,生产者速度慢,可能导致提前结束
所以添加任务不能起一个线程,一直加,一旦速度慢下来,就提前结束了。
保险的是在worker中 task_done之前添加。
最新文章
- java基础之 序列化
- BZOJ 1584 DP
- 使用MDK3探测隐藏SSID名称
- 关于div标签的title属性一闪一闪不正常显示的原因
- cookie记住密码功能
- composer 安装使用
- WPF Binding值转换器ValueConverter使用简介(二)-IMultiValueConverter
- 杭电1002 Etaoin Shrdlu
- spring 分散配置
- 各位Coder看过来
- JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖
- ansible基础-变量
- 基于FPGA视频时序生成中的库文件
- [SCOI2014]方伯伯的OJ(线段树)
- javascript时间处理
- 关于如何使`(a === 1 &;&; a === 2 &;&; a === 3)`返回`true`问题的思考
- Github链接及git学习心得总结
- javascript转换时间戳
- Swift网络封装库Moya中文手册之Targets
- python正则表达式,以及应用[下载图片]