ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

python 进程池实现 pool

2021-12-15 14:04:37  阅读:194  来源: 互联网

标签:15 Wed python 50 -- 进程 Tedu 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 

标签:15,Wed,python,50,--,进程,Tedu,pool
来源: https://blog.csdn.net/jialan75/article/details/121950810

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有