面试题答案
一键面试分析函数内存使用情况的方法及相关模块
- memory_profiler模块
- 安装:通过
pip install memory_profiler
安装。 - 用法:
- 安装:通过
from memory_profiler import profile
@profile
def your_function():
data = [i for i in range(1000000)]
# 其他处理数据的代码
return data
your_function()
在上述代码中,@profile
装饰器会在函数执行时,输出函数运行过程中的内存使用情况,包括起始内存、峰值内存等。
2. psutil模块
- 安装:一般Python环境默认安装,若没有可通过pip install psutil
安装。
- 用法:
import psutil
import os
def your_function():
process = psutil.Process(os.getpid())
start_memory = process.memory_info().rss
data = [i for i in range(1000000)]
# 其他处理数据的代码
end_memory = process.memory_info().rss
memory_usage = (end_memory - start_memory) / 1024 / 1024
print(f"函数使用的内存: {memory_usage} MB")
return data
your_function()
这里通过psutil.Process(os.getpid())
获取当前进程对象,在函数执行前后获取进程的内存使用量(rss
为常驻内存集),从而计算出函数运行过程中使用的内存量。