生产者以及消费者模式(进程池)

code
import time
import random
from multiprocessing import Pool, Manager
 
# 生产者
def producer(q, i):
    food = 'Spam-%d' % i
    time.sleep(random.uniform(1, 2))
    timeVal = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    print('时间:%s	生产者:%d	生产了 Spam-%d' % (timeVal, i, i))
    q.put(food)
 
# 消费者
def consumer(q, i):
    while True:
        food = q.get()
        if not food: break
        time.sleep(random.uniform(1, 2))
        timeVal = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        print('时间:%s	消费者: %d	吃了 %s' % (timeVal, i, food))
 
if __name__ == '__main__':
    q = Manager().Queue()
 
    producterPool = Pool(3)
    for n in range(1, 21):
        producterPool.apply_async(producer, (q, n))
 
    consumerPoolNum = 5
    consumerPool = Pool(consumerPoolNum)
    for n in range(1, consumerPoolNum + 1):
        consumerPool.apply_async(consumer, (q, n))
 
    producterPool.close()
    producterPool.join()
 
    for n in range(1, consumerPoolNum + 1):
        q.put(None)
 
    consumerPool.close()
    consumerPool.join()
 
    print('end')