python 多进程 内存增长_python多进程中的内存复制(实例讲解)

本文探讨了Python多进程中内存增长的问题,通过实例解释了Python的复制-on-write机制导致的内存副本。文章指出,即使数据不变,子进程也会复制父进程状态,可能导致内存消耗过大。为优化,提出了三种方案:早期创建进程、内存共享和按需读取文件。实验证明,这些改进能显著降低内存占用。
摘要由CSDN通过智能技术生成

导读热词

比较好奇python对于多进程中copy on write机制的实际使用情况。目前从实验结果来看,python 使用multiprocessing来创建多进程时,无论数据是否不会被更改,子进程都会复制父进程的状态(内存空间数据等)。所以如果主进程耗的资源较多时,不小心就会造成不必要的大量的内存复制,从而可能导致内存爆满的情况。

示例

举个例子,假设主进程读取了一个大文件对象的所有行,然后通过multiprocessing创建工作进程,并循环地将每一行数据交给工作进程来处理:

def parse_lines(args):

#working

...

def main_logic():

f = open(filename,'r')

lines = f.readlines()

f.close()

pool = multiprocessing.Pool(processes==4)

rel = pool.map(parse_lines,itertools.izip(lines,itertools.repeat(second_args)),int(len(lines)/4))

pool.close()

pool.join()

以下是top及ps结果:

78f15a71de658bdaaab32ebe86bee084.png

(四个子进程)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值