首页 > 编程语言 > 详细

Python并发编程—进程池

时间:2019-06-07 22:27:01      阅读:93      评论:0      收藏:0      [点我收藏+]

进程池实现

1.必要性
【1】 进程的创建和销毁过程消耗的资源较多
【2】 当任务量众多,每个任务在很短时间内完成时,需要频繁的创建和销毁进程。此时对计算机压力较大
【3】 进程池技术很好的解决了以上问题。

2.原理

创建一定数量的进程来处理事件,事件处理完进 程不退出而是继续处理其他事件,直到所有事件全都处理完毕统一销毁。增加进程的重复利用,降低资源消耗。

3.进程池实现

【1】 创建进程池对象,放入适当的进程

from multiprocessing import Pool

Pool(processes)

  • 功能: 创建进程池对象
  • 参数: 指定进程数量,默认根据系统自动判定

【2】 将事件加入进程池队列执行

pool.apply_async(func,args,kwds)

  • 功能: 使用进程池执行 func事件
  • 参数: func 事件函数
  •   args 元组 给func按位置传参
  •   kwds 字典 给func按照键值传参
  • 返回值: 返回函数事件对象

【3】 关闭进程池

pool.close()

  • 功能: 关闭进程池

【4】 回收进程池中进程

pool.join()

  • 功能: 回收进程池中进程
技术分享图片
 1 from multiprocessing import Pool
 2 from time import sleep,ctime
 3 
 4 # 进程池事件
 5 def worker(msg):
 6   sleep(2)
 7   print(msg)
 8   return ctime()
 9 
10 # 创建进程池
11 pool = Pool(4)
12 
13 # 向进程池添加执行事件
14 for i in range(10):
15   msg = "Hello %d"%i
16 
17   # r 代表func事件的一个对象
18   r = pool.apply_async(func=worker,args=(msg,))
19 
20 # 关闭进程池
21 pool.close()
22 
23 # 回收进程池
24 pool.join()
25 
26 print(r.get()) # 可以获取事件函数的返回值
进程池使用演示

 

Python并发编程—进程池

原文:https://www.cnblogs.com/maplethefox/p/10989156.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!