在Python中检测内存泄漏

时间:2015-03-23 15:46:07

标签: python performance unix memory memory-leaks

我有一个作为服务运行的python模块。有没有办法检测正在运行的进程的内存泄漏?

到目前为止,我在网上看到的大多数工具如muppy或者只是在所有正在运行的进程中使用内存(我有几个python进程)或者要求我运行python代码作为工具(由于我的代码作为服务运行,我无法做到)。

知道如何至少捕获内存使用情况,或者甚至可以检测内存泄漏吗?

1 个答案:

答案 0 :(得分:0)

我制作了一个小脚本来获取脚本的内存使用,但是,它只能在osx(肯定)和linux(很可能)上运行。这只是内部而非外部获取内存的一种方式,因此您需要实现几行来获取其他脚本的PID并检测脚本的内存使用情况。

#imports
import resource
import time

#variables
loops = 1
#gets initial memory usage
memusg = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
#captures initial memory usage
cptrdmemusg = memusg

#loop
while loops == 1:
    #waits for a time, making cpu utilitization non-existant
    time.sleep(300)
    #gets new memory usage
    memusg = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
    #detects memory leak. '*3' can be any number.
    if memusg == cptrdmemusg*3:
        print "Memory Leak Detected!"
        print "Memory Usage"+memusg