Python 中的内存分析器
Fariba Laiq
2024年2月15日
内存分析器
是监控代码块内存消耗的模块。
当它们被创建时,它会显示变量
、对象
、函数
等所占用的内存量。本文将使用 Memory Profiler
和 guppy
来分析 Python 的内存消耗。
在 Python 中使用 Memory Profiler
模块监控内存消耗
Memory Profiler
是 Python 中的一个开源模块,它显示了逐行代码分析和每行代码消耗的内存量。
应该首先使用以下命令安装它:
#Python 3.x
pip install -U memory_profiler
为了分析代码把函数装饰器@profile
放在函数上面,我们需要分析。
# Python 3.x
from memory_profiler import profile
@profile
def myfunc():
var_a = [1] * (10 ** 6)
var_b = [2] * (2 * 10 ** 7)
del var_b
del var_a
myfunc()
当我们运行代码以显示内存消耗时,我们会将命令行参数 -m memory_profiler
传递给 Python 解释器。
# Python 3.x
python -m memory_profiler filename.py
输出:
正如我们所见,每行代码的行号
、内存使用
和内存
都会增加。
在 Python 中使用 guppy
模块监控内存消耗
guppy
模块简单易用,可用于内存分析。我们将在代码中的某个位置为 guppy 编写代码以监控内存消耗。
应该首先使用以下命令安装它:
#Python 3.x
pip install guppy3
要访问 Python 的 heapy
对象,我们将调用 hpy()
。我们将使用 setref()
标记一个参考点来监控内存消耗。
为了打印表格,我们将使用我们创建的堆对象调用 heap()
函数,并获取消耗的总字节数,我们访问堆状态的 size 属性。
# Python 3.x
from guppy import hpy
heap = hpy()
heap.setref()
heap_status1 = heap.heap()
print("Heap Size before creating objects:", heap_status1.size, " bytes\n")
print(heap_status1)
a = []
for i in range(1000):
a.append(i)
heap_status2 = heap.heap()
print("Heap Size after creating objects : ", heap_status2.size, " bytes\n")
print(heap_status2)
输出:
作者: Fariba Laiq
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn