Python学习笔记——进阶篇【第九周】———线程、进程、协程篇(队列Queue和生产者消费者模型)
Python之路,进程、线程、协程篇
本节内容
- 进程、与线程区别
- cpu运行原理
- python GIL全局解释器锁
- 线程
- 语法
- join
- 线程锁之Lock\Rlock\信号量
- 将线程变为守护进程
- Event事件
- queue队列
- 生产者消费者模型
- Queue队列
- 开发一个线程池
- 进程
- 语法
- 进程间通讯
- 进程池
参考链接http://www.cnblogs.com/alex3714/articles/5230609.html
生产者消费者模型
实例演示
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 32 33 34 35 36 37 38 39 40 41 | #生产者消费者模型 import threading,queue import time def consumer(n): #消费者 while True : print ( "\033[32;1mconsumer[%s]\033[0m get task: %s" % (n,q.get())) time.sleep( 1 ) q.task_done() #通知队列 def producer(n): #生产者 count = 1 #计数器 while True : # for i in range(2): # time.sleep(1) #if q.qsize()<3:#小于3个包子,为了检测判断不要生产的太多 print ( "prodcer [%s] produced a new task:%s" % (n,count)) q.put(count) count + = 1 #计数器 q.join() #queue is empty,阻塞,等待队列通知(没有包子时会通知) print ( "all task has been cosumed by consumers..." ) q = queue.Queue() c1 = threading.Thread(target = consumer,args = [ 1 ,]) c2 = threading.Thread(target = consumer,args = [ 2 ,]) c3 = threading.Thread(target = consumer,args = [ 3 ,]) p = threading.Thread(target = producer,args = [ "XiaoYu" ,]) p2 = threading.Thread(target = producer,args = [ "Jack" ,]) # p3=threading.Thread(target=producer,args=["Bob",]) # p4=threading.Thread(target=producer,args=["Z1",]) # p5=threading.Thread(target=producer,args=["Z2",]) c1.start() c2.start() c3.start() p.start() p2.start() # p3.start() # p4.start() # p5.start() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步