生产者与消费者模型(重要)
2017-12-05 17:07
316 查看
小菜:
from multiprocessing import Process,Queue import time,os,random def procducer(q): for i in range(10): res = '包子%s'%i time.sleep(0.5) q.put(res) print('%s 生产了 %s'%(os.getpid(),res)) def consumer(q): while True: res = q.get() if res is None: break print('%s 吃 %s'%(os.getpid(),res)) time.sleep(random.randint(2,3)) if __name__ == '__main__': q = Queue() p = Process(target=procducer,args=(q,)) c = Process(target=consumer,args=(q,)) p.start() c.start() p.join() q.put(None) print('主')
大招:
from multiprocessing import Process,Queue,JoinableQueueimport time,random,os
def procducer(food,q):
for i in range(3):
res='%s%s' %(food,i)
time.sleep(0.5)
q.put(res)
print('%s 生产了 %s' %(os.getpid(),res))
q.join() #为了让p不死,内含计数器,(9)
def consumer(q):
while True:
res=q.get()
print('%s 吃 %s' %(os.getpid(),res))
time.sleep(random.randint(2,3))
q.task_done() # 让q.join 计数器逐个减一
if __name__ == '__main__':
q=JoinableQueue()
p1=Process(target=procducer,args=('包子',q,))
p2=Process(target=procducer,args=('泔水',q,))
p3=Process(target=procducer,args=('狗粮',q,))
c1=Process(target=consumer,args=(q,))
c2=Process(target=consumer,args=(q,))
c1.daemon=True ## 就加了个守护进程。
c2.daemon=True
p1.start()
p2.start()
p3.start()
c1.start()
c2.start()
p1.join() #为了让主进程不死
p2.join()
p3.join()
#生产者结束--->q.join()----->消费者确实把所有数据都收到
print('主',os.getpid())
为你钟情 --- 张先生
相关文章推荐
- 并发协作-生产者消费者模型
- 并发协作-生产者消费者模型
- 生产者/消费者模型
- Java线程:并发协作-生产者消费者模型 转自:http://lavasoft.blog.51cto.com/62575/221932
- Python自定义进程池(生产者/消费者模型)
- Python3之进程生产者消费者模型(important)
- 用BlockingQueue实现一个简单的生产者-消费者模型
- python生产者消费者简单模型
- Java线程(九)-生产者消费者模型
- 生产者与消费者模型
- 简单生产者消费者模型(java实现)
- 生产者--消费者模型之互斥锁和条件变量
- 4.利用python生成器实现简单的“生产者消费者”模型
- 生产者消费者模型
- java实现生产者消费者模型
- JAVA实现多线程生产者消费者模型
- JS实现经典生产者消费者模型
- 学习java过程中关于生产者消费者模型的一些心得
- 生产者消费者模型
- 生产者消费者模型,循环队列实现