博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-实现生产者消费者模型
阅读量:4951 次
发布时间:2019-06-12

本文共 1513 字,大约阅读时间需要 5 分钟。

生产者消费者:包子铺不停的做包子,行人不停的买 ---> 这样就达到了目的--->包子的销售 

两个不同的角色 包子铺,行人 只负责单一操作 让包子变成连接的介质.

 

1 #_*_coding:utf-8_*_ 2 from threading import Thread 3 from Queue import Queue 4 import time 5 class Procuder(Thread): 6     def __init__(self,name,queue): 7         self.__Name = name 8         self.__Queue = queue 9         super(Procuder,self).__init__()10     def run(self):11         while 1:12             if self.__Queue.full():13                 time.sleep(3)14             else:15                 time.sleep(1)16                 self.__Queue.put('**star**')17                 print '-->%s plus a star' % self.__Name18 class Cunsumer(Thread):19     def __init__(self,name,queue):20         self.__Name = name21         self.__Queue = queue22         super(Cunsumer,self).__init__()23     def run(self):24          while 1:25              if self.__Queue.empty():26                     time.sleep(3)27              else:28                  time.sleep(1)29                  self.__Queue.get()30                  print '-->%s get a star' % self.__Name31 maxque = Queue(maxsize=50)32 33 P1 = Procuder('p1',maxque)34 P1.start()35 P2 = Procuder('p2',maxque)36 P2.start()37 P3 = Procuder('p3',maxque)38 P3.start()39 for i in range(20):40     print '_________________'41     temp = Cunsumer(i,maxque)42     temp.start()

 于是问题来了 --->为什么我们需要这个模型?

1解耦:核心就是把生产者和消费者两个对象关系变得不紧密了

2缓冲:如果你是快递员,送一栋人很多的楼,你觉得是一个个的送,还是送到前台,发个短信让他们自己来拿好呢?

3防止阻塞:还是上面的例子,如果你是一个个的送 那么如果有个人 30分钟才会取 你是不是要等30分钟呢?

转载于:https://www.cnblogs.com/nerdlerss/p/5836133.html

你可能感兴趣的文章
sigar
查看>>
iOS7自定义statusbar和navigationbar的若干问题
查看>>
c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码...
查看>>
程序员如何提高影响力:手把手教你塑造个人品牌
查看>>
身份证校验原理和PHP实现
查看>>
[Locked] Wiggle Sort
查看>>
deque
查看>>
Ext JS学习第十三天 Ext基础之 Ext.Element
查看>>
python--迭代器与生成器
查看>>
SQL之case when then用法详解
查看>>
STL 排序函数
查看>>
Microsoft Dynamics CRM 2011 面向Internet部署 (IFD) ADFS虚拟机环境搭建的步骤(CRM与ADFS装在同一台服务器上) 摘自网络...
查看>>
Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
查看>>
Atitit mtp ptp rndis midi协议的不同区别
查看>>
Ajax辅助方法
查看>>
Python模块调用
查看>>
委托的调用
查看>>
c#中从string数组转换到int数组
查看>>
Scrapy入门程序点评
查看>>
DotNetty网络通信框架学习之源码分析
查看>>