python profilehooks的调用层次结构

时间:2014-09-16 12:27:11

标签: python performance profiling

Python' profilehooks确实是识别性能瓶颈的好方法。我正在使用@profile装饰器,通常我的输出类似于:

ncalls tottime percall cumtime percall filename:lineno(function) 1 14.408 14.408 115.486 115.486 ... 1 0.000 0.000 75.578 75.578 ... 2 0.000 0.000 75.578 37.789 ... 2 74.937 37.469 75.578 37.789 ... 10 0.000 0.000 23.893 2.389 ... 10 0.001 0.000 23.893 2.389 ... 10 0.461 0.046 23.891 2.389 ... 35969 1.663 0.000 23.440 0.001 ... 107907 4.825 0.000 18.174 0.000 ... 252099 5.917 0.000 11.686 0.000 threadsafe.py:42(__call__) 4 0.000 0.000 11.379 2.845 ... 4 0.000 0.000 11.366 2.842 ... 107907 1.203 0.000 8.441 0.000 ...

似乎 threadsafe.py:42 经常被我的一些代码不必要地调用。现在我需要知道为什么经常调用它。在过去,我曾经在这个函数中设置一个断点来识别谁在调用这个方法。事实证明这非常耗时,因为其中许多电话都是有效的。

你能分享一种更好的方法来识别哪些代码在python中调用另一个函数?也许是按频率排序的一种结果列表?

谢谢!

0 个答案:

没有答案