python 的分析器 cProfile 是如何工作的?它对代码进行检测或采样吗?

How python's profiler cProfile works? Does it instrument or samples the code?

还有,cProfileprofile有什么区别?

cProfile 是确定性分析器:跟踪函数 在不同的兴趣点(例如函数调用、函数 return、异常)执行,并且这些事件的精确时间是记录。您可以找到更多信息 here.

来自 documentation :Python 标准库提供了两种不同的分析器:

  • cProfile 推荐给大多数用户;它是一个具有合理开销的 C 扩展,适合分析长 运行 程序。基于 lsprof,由 Brett Rosen 和 Ted Czotter 贡献。
  • profile,一个纯Python模块,其接口是cProfile模仿的。为配置文件的程序增加大量开销。如果您尝试以某种方式扩展探查器,使用此模块可能会更容易完成任务。