标签:15 Wed python 50 -- 进程 Tedu pool
进程池实现
必要性
- 进程的创建和销毁过程消耗的资源比较多
- 当任务量众多,每个任务在很短时间内完成时,需要平方的创建和销毁进程,此时对计算机压力比较大
- 进程池技术很好的解决了以上问题
原理
创建一定数量的进程来处理事件,事件处理完进程不退出而是继续处理其他事件,直到所有事件全都处理完毕统一销毁.增加进程的重复利用,降低资源消耗
进程池实现
- 创建进程池对象,放入适当的进程
from multiprocessing import Pool
Pool(processes)
功能: 创建进程池对象
参数: 指定进程数量,默认根据系统自动判断
- 将事件加入进程池队列执行
pool.apply_async(func,args,kwds)
功能: 使用进程池执行 func 事件
参数: func 事件函数
args 援助 给func按位置传参
kwds 字典 给func按照键值传参
返回值: 返回函数事件对象
-
关闭进程池
pool.close() 功能: 关闭进程池
-
回收进程池中进程
功能: 回收进程池中进程
-
图解
简单的代码例子
"""
进程池使用实例
"""
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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。