Python教程

python 进程池实现 pool

本文主要是介绍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()
    功能: 关闭进程池
    
  • 回收进程池中进程

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s2bPdL8p-1639547710633)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211215133133087.png)]

简单的代码例子

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

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 
这篇关于python 进程池实现 pool的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!