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')