Python代码:
def my_function():
my_list = [i for i in range(1_000_000)]
return my_list
my_list = my_function()
不同库报告的内存使用情况:
memory_profiler:82MB
tracemalloc:36MB
psutil:3MB
为什么不同库计算出的内存使用量会有很大差异
你的函数
my_function()
创建一个包含1.000.000个整数的列表,这将占用大量内存,内存的差异是因为不同的内存分析库使用不同的方法来测量内存使用情况
memory_profiler
使用逐行内存分析器计算每行代码的内存使用情况。
tracemalloc
使用较低级别的方法来测量内存使用情况。它直接从 Python 解释器跟踪内存分配和释放,这可能导致报告的内存使用率较低。
psutil
使用系统级 API 来测量内存使用情况。它报告整个进程的内存使用情况,包括 Python 对象和进程使用的其他系统资源。