生產者以及消費者模式(多程序)
阿新 • • 發佈:2020-12-26
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):outputswhile 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')
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 %