生产者消费者模型
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('主线程结束')