code
import time import random from multiprocessing import Process, Queue # 生产者 def producer(q, i): food = ‘Spam-%d‘ % i time.sleep(random.uniform(2, 5)) timeVal = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) print(‘时间:%s\t生产者:%d 生产了 %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\t消费者: %d\t吃了 %s‘ % (timeVal, i, food)) if __name__ == ‘__main__‘: q = Queue() producerPs = [] for n in range(1, 16): producerPs.append(Process(target=producer, args=(q, n))) for producerP in producerPs: producerP.start() consumerPs = [] for n in range(1, 3): consumerPs.append(Process(target=consumer, args=(q, n))) for consumerP in consumerPs: consumerP.start() for producerP in producerPs: producerP.join() for consumerP in consumerPs: q.put(None) for consumerP in consumerPs: consumerP.join() print(‘end‘)
outputs
macname@MacdeMacBook-Pro py % python3 cccccc.py 时间:2020-03-23 16:12:18 生产者:6 生产了 6 时间:2020-03-23 16:12:18 生产者:1 生产了 1 时间:2020-03-23 16:12:19 生产者:11 生产了 11 时间:2020-03-23 16:12:19 生产者:8 生产了 8 时间:2020-03-23 16:12:19 生产者:9 生产了 9 时间:2020-03-23 16:12:19 生产者:12 生产了 12 时间:2020-03-23 16:12:20 生产者:7 生产了 7 时间:2020-03-23 16:12:20 消费者: 1 吃了 Spam-6 时间:2020-03-23 16:12:20 生产者:10 生产了 10 时间:2020-03-23 16:12:20 生产者:3 生产了 3 时间:2020-03-23 16:12:20 生产者:15 生产了 15 时间:2020-03-23 16:12:20 生产者:13 生产了 13 时间:2020-03-23 16:12:20 生产者:2 生产了 2 时间:2020-03-23 16:12:20 消费者: 2 吃了 Spam-1 时间:2020-03-23 16:12:20 生产者:4 生产了 4 时间:2020-03-23 16:12:21 生产者:5 生产了 5 时间:2020-03-23 16:12:21 生产者:14 生产了 14 时间:2020-03-23 16:12:21 消费者: 1 吃了 Spam-11 时间:2020-03-23 16:12:21 消费者: 2 吃了 Spam-8 时间:2020-03-23 16:12:22 消费者: 1 吃了 Spam-9 时间:2020-03-23 16:12:23 消费者: 2 吃了 Spam-12 时间:2020-03-23 16:12:24 消费者: 1 吃了 Spam-7 时间:2020-03-23 16:12:24 消费者: 2 吃了 Spam-10 时间:2020-03-23 16:12:25 消费者: 1 吃了 Spam-3 时间:2020-03-23 16:12:26 消费者: 2 吃了 Spam-15 时间:2020-03-23 16:12:27 消费者: 1 吃了 Spam-13 时间:2020-03-23 16:12:27 消费者: 2 吃了 Spam-2 时间:2020-03-23 16:12:28 消费者: 1 吃了 Spam-4 时间:2020-03-23 16:12:29 消费者: 2 吃了 Spam-5 时间:2020-03-23 16:12:30 消费者: 1 吃了 Spam-14 end macname@MacdeMacBook-Pro py %