python生产者和消费者模式实现(三)进程池方式

python生产者和消费者模式实现(三)进程池方式,第1张

概述注意:如果要使用Pool(进程池方式)创建进程,就需要使用multiprocessing.Manager()中的 Queue(),而不是multiprocessing.Queue() import t
注意:如果要使用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,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,n))

producterPool.close()
producterPool.join()

for n in range(1,consumerPoolNum + 1):
q.put(None)

consumerPool.close()
consumerPool.join()

print('end')

总结

以上是内存溢出为你收集整理的python生产者和消费者模式实现(三)进程池方式全部内容,希望文章能够帮你解决python生产者和消费者模式实现(三)进程池方式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1190388.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存