进程池
1.进程池实现
1.必要性
- 进程的创建和销毁过程消耗的资源较多
- 当任务量众多,每个任务在很短时间内完成时,需要频繁的创建和销毁进程。此时对计算机压力较大
- 进程池技术很好的解决了以上问题
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()
功能:回收进程池中进程
from multiprocessing import Pool
from time import sleep, ctime
def worker(msg):
sleep(2)
print(ctime(), "--", msg, )
# 创建进程池 事件要写在创建进程之前
if __name__ == '__main__':
pool = Pool()
for i in range(10):
msg = "tedu %d" % i
pool.apply_async(func=worker, args=(msg,))
pool.close()
pool.join()