关于oop:跟踪Python包中方法和函数的执行次数

Tracking number of executions of methods and functions in Python package

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How can you profile a Python script?

我正在开发一个API,其中有几个包通过各种GUI协作在一起,我正在慢慢地思考如何能够分析包和模块以及方法和类在正常运行下从用户那里获得的调用量。考虑到我可能能够检测到瓶颈并找出大部分工作需要在哪里进行,同时也可以看到我在哪里可以合并类似的功能。

我把它想象成一个简单的条形图

enter image description here

其中,每个条代表一个方法、模块或包,具体取决于您感兴趣的"深度",高度轴是它已经得到的调用量。

当前是否有类似的内容和/或您将如何在Python中实现这些内容?

我正在考虑在每个方法的入口放置一个简单的记录器,比如说debug,然后在制作图表时过滤掉它们。但这意味着我的代码会变得更混乱,我必须记住为所有人做这件事。更简单的是,如果我可以在用say-a-certain标志编译时应用一个编译时修饰符。用python可以吗?

谢谢


我认为来自stdlib的跟踪模块会有所帮助。


pythondecoratorlibrary中提到了一个修饰器,用于分析/跟踪单个函数。它将为您提供一个实现所描述内容的运行起点。

您并不真正在python中编译,它是动态完成的,但是您可以根据运行时标志改变decorator定义,以打开和关闭它。