晋级python高手的必备技能(之一)-内存泄露分析优化

发现应用程序正在耗尽内存是开发人员需要面对的棘手问题之一。内存问题通常很难诊断和修复,并且在Python中更难。Python的自动垃圾收集使它很容易上手并易学,但是它很善于避开障碍,以至于当它不能如预期的那样工作时,开发人员可能会对如何识别和修复问题感到困惑。

在文中,我将展示如何在EvalML中诊断和修复内存问题,EvalML是Alteryx创新实验室开发的开源AutoML库。没有解决内存问题的魔法配方,但我希望开发人员,特别是Python开发人员,能够了解在将来遇到这类问题时可以利用的工具。

读完这篇博文后,你应该遵循以下几点:

  1. 为什么查找和修复程序中的内存问题很重要,
  2. 什么是循环引用,为什么它们会导致Python中的内存泄漏,以及
  3. 了解Python的内存分析工具,以及可以用来识别内存问题原因的一些步骤。

设置舞台

EvalML团队在发布我们的包的新版本之前运行一套性能测试,以捕获任何性能回归。这些性能测试包括在各种数据集上运行我们的AutoML算法,测量我们的算法达到的分数以及运行时间,并将这些指标与我们之前发布的版本进行比较。

有一天我正在运行测试,突然应用程序崩溃了。发生了什么事?

Step 0 - 什么是内存,什么是泄漏?

任何编程语言最重要的功能之一就是它在计算机内存中存储信息的能力。每当程序创建一个新变量时,它就会分配一些内存来存储该变量的内容。

内核为程序定义了一个接口来访问计算机的cpu、内存、磁盘存储等等。每一种编程语言都提供了要求内核分配和释放内存块以供运行程序使用的方法。

当程序要求内核留出一块内存来使用时,就会发生内存泄漏,但是由于错误或崩溃,程序永远不会告诉内核它何时结束使用该内存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值