标签:__ name res random list range 进程
生产者消费者模型
https://blog.csdn.net/miaoqinian/article/details/80077388
特点:边生产边消费,生产消费互不影响,谁快,等慢的那个,直到所有都生产完并且消费完。
适用于:生产和消费两个部分可以完全剥离开的时候,用这个模型比较好。
例子:
from multiprocessing import Process, Pool, Lock, Condition,Queue
import os,time
import random
def producer(name, q):
time.sleep(random.randint(1,2))
res = '大虾%s' % name
q.put(res)
print('生产者》》》%s 生产了 %s' % (name,res))
def consumer(name, q):
while True:
res = q.get()
if res is None:
break
time.sleep(random.randint(1,3))
print('消费者》》%s 准备开吃%s。'%(name,res))
if __name__ == '__main__':
q = Queue()
p_list = []
c_list = []
for i in range(10):
p = Process(target=producer,args=('{}'.format(i),q))
p_list.append(p)
for i in range(4):
c = Process(target=consumer,args=('bb',q))
c_list.append(c)
for p in p_list:
p.start()
for c in c_list:
c.start()
for p in p_list: #等待所有生产者的p进程执行完毕,才到主进程(但是主进程没有等消费者的c进程)
p.join()
for i in range(len(c_list)):
q.put(None)
print('主线程结束')
标签:__,name,res,random,list,range,进程 来源: https://blog.csdn.net/aaon22357/article/details/88045826
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。