首页 > 代码库 > python之函数实现生产者消费者模型(开发模型)
python之函数实现生产者消费者模型(开发模型)
#!/usr/bin/env /python import threading import time import Queue import random #生产者 def Proudcer(name,que): while True: if que.qsize() < 3: #如果只剩下3个包子就又开始生产包子(如果队列中的数据为3个时) que.put(‘baozi‘) #包子入队列 print ‘%s 生产包子...‘ % name else: print "%s 仅剩3个包子..." time.sleep(random.randrange(5)) #随机在1-5秒内开始生产包子(推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间) #消费者 def Consumer(name,que): while True: try: que.get_nowait() #消费者消费包子(从队列取数据,且为非阻塞模式,如果队列为空了,则会引发出异常) print ‘ %s 消费包子...‘ % name time.sleep(random.randrange(3)) #随机在1-3秒内开始消费包子(推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间) except Exception: print u‘包子已卖完...‘ #捕捉队列为空时引发的异常 #定义一个队列存用来储包子 q = Queue.Queue() #创建第1个厨师 (也就是线程1,传入name参数:“tantianran”和队列q) p1 = threading.Thread(target=Proudcer,args=[‘tantianran‘,q]) #创建第2个厨师 (也就是线程2 p2 = threading.Thread(target=Proudcer,args=[‘dengwenqing‘,q]) #启动线程(线程是同时工作) p1.start() p2.start() #创建2个消费者线程分别为c1和c2 c1 = threading.Thread(target=Consumer,args=[‘xiaofeizhe1‘,q]) c2 = threading.Thread(target=Consumer,args=[‘tanyongxing‘,q]) #启动线程(线程是同时工作) c1.start() c2.start()
本文出自 “运维交流Q群:223843163” 博客,请务必保留此出处http://freshair.blog.51cto.com/8272891/1898467
python之函数实现生产者消费者模型(开发模型)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。