在 Python 中跟踪内存使用情况

问题描述 投票:0回答:1

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

为什么不同库计算出的内存使用量会有很大差异

python-3.x memory profiler psutil tracemalloc
1个回答
0
投票

你的函数

my_function()
创建一个包含1.000.000个整数的列表,这将占用大量内存,内存的差异是因为不同的内存分析库使用不同的方法来测量内存使用情况

memory_profiler
使用逐行内存分析器计算每行代码的内存使用情况。

tracemalloc
使用较低级别的方法来测量内存使用情况。它直接从 Python 解释器跟踪内存分配和释放,这可能导致报告的内存使用率较低。

psutil
使用系统级 API 来测量内存使用情况。它报告整个进程的内存使用情况,包括 Python 对象和进程使用的其他系统资源。

© www.soinside.com 2019 - 2024. All rights reserved.