python 内存分析

Posted 我和你并没有不同

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 内存分析相关的知识,希望对你有一定的参考价值。

memory_profiler 模块被用于在逐行的基础上,测量你代码的内存使用率,也建议安装 psutil 包,使得 memory_profile 模块运行的更快

from memory_profiler import profile
 
 
@profile(precision=6)
def primes(n):
    if n == 2:
        return [2]
    elif n < 2:
        return []
    s = range(3, n + 1, 2)
    mroot = n ** 0.5
    half = (n + 1) / 2 - 1
    i = 0
    m = 3
    while m <= mroot:
        if s[i]:
            j = (m * m - 3) / 2
            s[j] = 0
            while j < half:
                s[j] = 0
                j += m
        i = i + 1
        m = 2 * i + 3
    return [2] + [x for x in s if x]
 
 
len(primes(100000))

 

meliae会把某个时刻的内存给dump到一个文件中,然后再对该文件进行分析,当我们的某个python程序占用内存很大,可能有内存泄露发生时,可以使用该工具来进行检测分析

 

Guppy (使用了Heapy):使用 guppy 包,你可以跟踪每个类型在你代码中每个阶段(字符, 元组, 字典 等等)有多少对象被创建了,查看占用内存前十位变量的工具

 

objgraph模块:该工具允许你查看内存中对象的数量,定位含有该对象的引用的所有代码的位置。结合pdb一起使用

以上是关于python 内存分析的主要内容,如果未能解决你的问题,请参考以下文章

变量的内存分析图

Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段

一行代码搞定 Python 逐行内存消耗分析

8.5K Star! Python 代码内存分析的利器

C 中的共享内存代码片段

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段