MST

星途 面试题库

面试题:Python中常用的内存分析工具及定位性能瓶颈基础

请列举至少两种Python中用于内存分析的工具,并简要说明如何使用其中一种工具来初步定位程序中的性能瓶颈。
10.7万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  • memory_profiler:用于监控Python程序中函数级别的内存使用情况。使用时需先安装该库(pip install memory_profiler),然后在需要分析的函数前添加装饰器@profile,再通过mprof run your_script.py命令运行脚本,最后用mprof plot生成内存使用情况的图表。
  • objgraph:可帮助追踪Python对象的引用关系,有助于发现内存泄漏。例如objgraph.show_growth()可显示哪些类型的对象在程序运行过程中数量增长明显。

memory_profiler定位性能瓶颈为例:

  1. 安装memory_profiler库,命令为pip install memory_profiler
  2. 假设我们有如下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()
  1. 使用mprof run test.py运行脚本,此命令会记录内存使用情况。
  2. 运行完成后,使用mprof plot生成内存使用随时间变化的图表。从图表中可直观看到my_function函数执行过程中的内存峰值等信息,若内存使用峰值过高或增长过快,就可初步判断该函数存在性能瓶颈,比如在上述例子中创建大量数据的列表推导式[i for i in range(1000000)]可能就是导致内存占用大的原因,可进一步优化。