python 进程池实现 pool

进程池实现

必要性

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

原理

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

进程池实现

  • 创建进程池对象,放入适当的进程
from multiprocessing import Pool

Pool(processes)
功能: 创建进程池对象
参数: 指定进程数量,默认根据系统自动判断
  • 将事件加入进程池队列执行
pool.apply_async(func,args,kwds)
功能: 使用进程池执行 func 事件
参数: func 事件函数
    args 援助 给func按位置传参
    kwds 字典 给func按照键值传参
返回值: 返回函数事件对象    
  • 关闭进程池

    pool.close()
    功能: 关闭进程池
    
  • 回收进程池中进程

    功能: 回收进程池中进程
    
  • 图解

python 进程池实现 pool

简单的代码例子

"""
进程池使用实例
"""

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()

控制台输出

Wed Dec 15 13:50:20 2021 --  Tedu 0 
Wed Dec 15 13:50:20 2021 --  Tedu 1 
Wed Dec 15 13:50:20 2021 --  Tedu 2 
Wed Dec 15 13:50:20 2021 --  Tedu 3 
Wed Dec 15 13:50:20 2021 --  Tedu 4 
Wed Dec 15 13:50:20 2021 --  Tedu 5 
Wed Dec 15 13:50:20 2021 --  Tedu 6 
Wed Dec 15 13:50:20 2021 --  Tedu 7 
Wed Dec 15 13:50:21 2021 --  Tedu 8 
Wed Dec 15 13:50:21 2021 --  Tedu 9 
上一篇:重名参数的bug


下一篇:C++ map容器学习笔记