调用python profilehooks的层次结构

2024-04-25 02:07:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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 ...

似乎线程安全。py:42经常被我的一些代码不必要地调用。现在我要知道为什么经常这么叫。在过去,我常常在这个函数中设置一个断点来标识谁在调用这个方法。结果是非常耗时的,因为这些调用中的许多都是有效的。你知道吗

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

谢谢你!你知道吗


Tags: 方法函数代码py装饰filename性能profile