python processpoolexector 释放内存_python的multiprocessing模块进程创建、资源回收-Process,Pool...

本文详细介绍了Python multiprocessing模块的使用,包括Process和Pool两种创建进程的方式。Process创建的进程需要手动调用join()回收,而Pool则会自动管理进程资源。Pool通过进程池实现任务调度,即使任务数量超过池大小,也不会创建额外进程,且任务执行完毕后需调用join()回收资源。
摘要由CSDN通过智能技术生成

python的multiprocessing有两种创建进程的方式,每种创建方式和进程资源的回收都不太相同,下面分别针对Process,Pool及系统自带的fork三种进程分析。

1.方式一:fork()

举例:

import os

pid = os.fork() # 创建一个子进程

os.wait() # 等待子进程结束释放资源

pid为0的代表子进程。

缺点:

1.兼容性差,只能在类linux系统下使用,windows系统不可使用;

2.扩展性差,当需要多条进程的时候,进程管理变得很复杂;

3.会产生“孤儿”进程和“僵尸”进程,需要手动回收资源。

优点:

是系统自带的接近低层的创建方式,运行效率高。

2.方式二:Process进程

举例:

import multiprocessing as ms

def test():

pass

p1 = ms.Process(target=test) # 创建子进程

p1.start() # 子进程 开始执行

p1.join() # 等待子进程结束

特点:

1.注意:Process对象可以创建进程,但Process对象不是进程,其删除与否与系统资源是否被回收没有直接的关系。

2.主进程执行完毕后会默认等待子进程结束后回收资源,不需要手动回收资源;join()函数用来控制子进程

结束的顺序,其内部也有一个清除僵尸进程的函数,可以回收资源;

3.Process进程创建时࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值