cProfile、py-spy?Python层面的profiling?cProfile、py-spy?
Python 侧:解释器开销、GIL、过多 Python 调用(如逐元素操作)、数据预处理与 dataloader 在 Python 中执行等,可能拖慢整体。需要在 Python 层做 profiling,看哪些函数、哪行代码占 CPU 多,而不是只看 GPU。
cProfile(Python 标准库):确定性 profiler,记录每个函数的调用次数与累计耗时。用法:python -m cProfile -o out.prof train.py 或代码内 cProfile.run('func()');用 pstats 或 snakeviz 查看。可看到 Python 调用栈 与热点函数;适合找「谁在占 CPU」——如某个 dataloader 的 collate、或某段预处理。注意:会拖慢执行,且主要反映 CPU 时间,不直接反映 GPU 等待。
py-spy top 实时看热点;py-spy record -o profile.svg 生成火焰图。优点:低侵入、可对已运行进程采样、开销小。适用:生产或长时间运行时的现场采样,看当前 Python 热点;与 cProfile 互补(cProfile 更精确、py-spy 更轻量、可事后挂载)。| 返回模块 | 返回总览 |