一、代码
#coding=utf-8 import threading import time from queue import Queue class Pro(threading.Thread): def run(self): global q count=0 while True: if q.qsize()<100: for i in range(10): count = count+1 msg = "生成产品"+str(count) q.put(msg) print(msg) time.sleep(1) class Con(threading.Thread): def run(self): global q while True: if q.qsize()>10: for i in range(3): msg = self.name + "消费了" + q.get() print(msg) time.sleep(1) if __name__ == "__main__": q = Queue() for i in range(50): q.put("初始产品"+str(i)) print("初始产品"+str(i)) for i in range(2): p = Pro() p.start() for i in range(5): c = Con() c.start()
二、运行结果
生成产品1
生成产品2
生成产品3
生成产品4
生成产品5
生成产品6
生成产品7
生成产品8
生成产品9
生成产品10
Thread-3消费了初始产品0
Thread-3消费了初始产品1
Thread-3消费了初始产品2
Thread-4消费了初始产品3
Thread-4消费了初始产品4
Thread-4消费了初始产品5
Thread-5消费了初始产品6
Thread-5消费了初始产品7
Thread-5消费了初始产品8
Thread-6消费了初始产品9
Thread-6消费了初始产品10
Thread-6消费了初始产品11
Thread-7消费了初始产品12
Thread-7消费了初始产品13
Thread-7消费了初始产品14
Thread-4消费了初始产品15
Thread-4消费了初始产品16
Thread-4消费了初始产品17
生成产品11
生成产品12
生成产品13
生成产品14
生成产品15
生成产品16
Thread-3消费了初始产品18
Thread-3消费了初始产品19
Thread-3消费了初始产品20
生成产品17
生成产品18
生成产品19
生成产品20
Thread-7消费了初始产品21
Thread-6消费了初始产品22
Thread-6消费了初始产品23
Thread-6消费了初始产品24
Thread-7消费了初始产品25
Thread-7消费了初始产品26
Thread-5消费了初始产品27
Thread-5消费了初始产品28
Thread-5消费了初始产品29
Thread-4消费了初始产品30
Thread-4消费了初始产品31
Thread-4消费了初始产品32
Thread-3消费了初始产品33
Thread-3消费了初始产品34
Thread-3消费了初始产品35
Thread-5消费了初始产品36
Thread-5消费了初始产品37
Thread-5消费了初始产品38
Thread-6消费了初始产品39
Thread-6消费了初始产品40
Thread-6消费了初始产品41
生成产品21
生成产品22
生成产品23
生成产品24
生成产品25
生成产品26
生成产品27
生成产品28
Thread-7消费了初始产品42
Thread-7消费了初始产品43
Thread-7消费了初始产品44
生成产品29
生成产品30
三、问题
上述程序创造了2个产生数据的线程p1、p2,和五个输出数据的线程c1/2/3/4/5,产生数据的线程是一个循环,产生10个数据,消费数据的线程是输出3个线程,我知道线程之间是交替执行的,但是从结果中看出,一个线程的循环都没有结束都跳去了另一个线程里呢,而且还没有规律,请问老师这样是为什么?线程交替运行这么不可控,他存在的意思是啥,都不能用来计算?
老师,这个第九行为什么会报错,输入了两个参数呢
老师你课上讲错了。。。 下表是从1开始 然后奇数 偶数行 说反了。。。 所以到底 你说的正确呢 还是这个答案是有问题的呢??我是按你说的 填的 然后错了
不懂这个root ,为什么要用root,感觉无缘无故
这节资料没上传完吧,我想要require.js文件
老师我为什么创建的变量 t = turtle.pen() 导致后面代码运行不了?
老师你好:
print(id(test01())) 打印出来的是什么?
老师 : 我的pychram 写模板语言的时候,不会自动关联文件夹和文件 是需要设置嘛
请问老师,ORALCE的安装包在哪里能找到呢?
老师,我点击这个mysql的客户端,总是出现一闪就退的情况下,根本打不开。
服务也是出现这样的问题,mysql启动不了。
环境我也配置好了,也重新安装过,就是解决不了。
如果在pyCharm中编好一段完整的代码,运行后发现一个变量无用,直接删掉这行代码和用视频中的del删除该变量有什么区别?
老师,我这个地方想问一下:
增强for循环里面的printFile是只要使用一次这个方法level就加1吗,那么这样的话temp相当是一个数组,在for循环里面遍历这个数组(也就是遍历子文件)不得循环很多次吗,那printFile也会循环很多次,每次循环level都加1的话那同级文件的层次数不就不一样了吗,这个地方有点搞不懂,麻烦解释一下。
老师,我用递归算50的乘结果为0也是表示溢出了吗,溢出是只有结果为负数溢出还是结果为负数和0的时候都是溢出啊
update account set balance=balance-200 where username='张三' update account set balance= balance+200 where username='李四' 老师,我不用开启事物的方式,就按照以前更新数据的常规方式,重新查询事物,值也是修改的啊。
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637