python生产者和消费者模式实现(三)进程池方式
程序员文章站
2023-11-08 19:22:04
注意:如果要使用Pool(进程池方式)创建进程,就需要使用multiprocessing.Manager()中的 Queue(),而不是multiprocessing.Queue() import timeimport randomfrom multiprocessing import Pool, ......
注意:如果要使用pool(进程池方式)创建进程,就需要使用multiprocessing.manager()中的 queue(),而不是multiprocessing.queue()
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\t生产者:%d\t生产了 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\t消费者: %d\t吃了 %s' % (timeval, i, food))
if __name__ == '__main__':
q = manager().queue()
producternum = 50
producterpoolnum = 5
producterpool = pool(producterpoolnum)
for n in range(1, producternum + 1):
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')