试图了解 python 内存分析器
Trying to understand python memory profiler
我正在使用 Memory Profiler module to get the memory usage of my python code following this 答案。但是,我无法解释 %memit
magic 的输出(或使用模块中的 @profile
装饰器或 mprof run
的输出)。
例如,
%memit range(10000)
给我 peak memory: 97.41 MiB, increment: 0.24 MiB
同时,
%memit xrange(10000)
显示 peak memory: 97.46 MiB, increment: 0.00 MiB
。我确实理解 xrange
返回 xrange type
与 range()
返回列表之间的区别。我在这里使用它们只是为了演示这两种情况。
我的问题是
peak memory
和 increment
究竟是什么意思?
- 我应该从这个输出中报告什么作为脚本(或函数)的总内存使用量?
Peak memory指的是您的系统在运行时间运行时间内的系统内存使用峰值(包括其他进程的内存使用)。
增量是内存使用量相对于程序运行之前的内存使用量的增量(即increment
= peak memory
- starting memory
)。
所以你会举报 increment
。峰值内存只是帮助您计算在程序中您与使用所有 RAM 的距离有多近 运行。
如果参考自述文件用法部分的逐行示例:
Line # Mem usage Increment Line Contents
==============================================
3 @profile
4 5.97 MB 0.00 MB def my_func():
5 13.61 MB 7.64 MB a = [1] * (10 ** 6)
6 166.20 MB 152.59 MB b = [2] * (2 * 10 ** 7)
7 13.61 MB -152.59 MB del b
8 13.61 MB 0.00 MB return a
%memit
本质上是为您提供第 6 行的内存使用情况,但报告相对于第 4 行的增量(实际上是第 1 行,但大概第 1-3 行没有计算)。
我正在使用 Memory Profiler module to get the memory usage of my python code following this 答案。但是,我无法解释 %memit
magic 的输出(或使用模块中的 @profile
装饰器或 mprof run
的输出)。
例如,
%memit range(10000)
给我 peak memory: 97.41 MiB, increment: 0.24 MiB
同时,
%memit xrange(10000)
显示 peak memory: 97.46 MiB, increment: 0.00 MiB
。我确实理解 xrange
返回 xrange type
与 range()
返回列表之间的区别。我在这里使用它们只是为了演示这两种情况。
我的问题是
peak memory
和increment
究竟是什么意思?- 我应该从这个输出中报告什么作为脚本(或函数)的总内存使用量?
Peak memory指的是您的系统在运行时间运行时间内的系统内存使用峰值(包括其他进程的内存使用)。
增量是内存使用量相对于程序运行之前的内存使用量的增量(即increment
= peak memory
- starting memory
)。
所以你会举报 increment
。峰值内存只是帮助您计算在程序中您与使用所有 RAM 的距离有多近 运行。
如果参考自述文件用法部分的逐行示例:
Line # Mem usage Increment Line Contents
==============================================
3 @profile
4 5.97 MB 0.00 MB def my_func():
5 13.61 MB 7.64 MB a = [1] * (10 ** 6)
6 166.20 MB 152.59 MB b = [2] * (2 * 10 ** 7)
7 13.61 MB -152.59 MB del b
8 13.61 MB 0.00 MB return a
%memit
本质上是为您提供第 6 行的内存使用情况,但报告相对于第 4 行的增量(实际上是第 1 行,但大概第 1-3 行没有计算)。