面试题答案
一键面试- memory_profiler:用于监控Python程序中函数级别的内存使用情况。使用时需先安装该库(
pip install memory_profiler
),然后在需要分析的函数前添加装饰器@profile
,再通过mprof run your_script.py
命令运行脚本,最后用mprof plot
生成内存使用情况的图表。 - objgraph:可帮助追踪Python对象的引用关系,有助于发现内存泄漏。例如
objgraph.show_growth()
可显示哪些类型的对象在程序运行过程中数量增长明显。
以memory_profiler
定位性能瓶颈为例:
- 安装
memory_profiler
库,命令为pip install memory_profiler
。 - 假设我们有如下Python脚本
test.py
:
import time
@profile
def my_function():
data = [i for i in range(1000000)]
time.sleep(1)
return data
if __name__ == "__main__":
my_function()
- 使用
mprof run test.py
运行脚本,此命令会记录内存使用情况。 - 运行完成后,使用
mprof plot
生成内存使用随时间变化的图表。从图表中可直观看到my_function
函数执行过程中的内存峰值等信息,若内存使用峰值过高或增长过快,就可初步判断该函数存在性能瓶颈,比如在上述例子中创建大量数据的列表推导式[i for i in range(1000000)]
可能就是导致内存占用大的原因,可进一步优化。