Python 从cProfile获得更精确的结果
我的问题与Brice Thomas的问题非常相似: 然而,我找不到令人满意的答案。 我会解释: 我得到了类似的结果,即大部分时间都花在我使用的函数上(prox.py、rawprox.py和position.py) 我可以优化在其他操作上花费的时间,但现在我真的想了解在我的功能中什么花费的时间最多 我遵循了arbarnert的答案,但看起来它只起作用,因为整个代码都是在pr.enable()和pr.disable()之间编写的。我的意思是cProfile结果仅限于写在这些行之间的函数。这意味着,为了使其正常工作,我不应该调用任何我想知道任何时间细节的函数,因为我不希望这些函数出现在cProfile结果中。我希望它们的子功能出现 例如:Python 从cProfile获得更精确的结果,python,python-2.7,cprofile,Python,Python 2.7,Cprofile,我的问题与Brice Thomas的问题非常相似: 然而,我找不到令人满意的答案。 我会解释: 我得到了类似的结果,即大部分时间都花在我使用的函数上(prox.py、rawprox.py和position.py) 我可以优化在其他操作上花费的时间,但现在我真的想了解在我的功能中什么花费的时间最多 我遵循了arbarnert的答案,但看起来它只起作用,因为整个代码都是在pr.enable()和pr.disable()之间编写的。我的意思是cProfile结果仅限于写在这些行之间的函数。这意味着,为
import cProfile
pr = profile.Profile()
pr.enable()
any_operations_without_my_functions_called
pr.disable()
pr.print_stats(sort='time')
将工作并告诉我什么操作花费的时间最多
相反地
import cProfile
pr = profile.Profile()
pr.enable()
call_prox.py
call_rawprox.py
call_position.py
pr.disable()
pr.print_stats(sort='time')
这只会导致告诉我prox.py花了x秒,rawprox.py花了y秒,position.py花了z秒,而我想知道其中哪些操作花的时间最多
我显然不想在分析器行之间报告这些函数中的全部代码,因为这些函数是在循环中调用的,这将是一个令人难以置信的混乱(实际上,这将是完全不可恢复的,我相信一定有人想到了这样做的方法)
您有什么建议的解决方案吗?编写一个脚本,执行与您感兴趣的函数相同的过程,然后对其进行分析?您需要line_profiler…-而且,如果你要做很多分析,在ipython中使用%prun和%lprun magics…@wwii我就是这么做的,但这里有更多的细节:我有一个脚本,它使用了这些函数,我想了解详细信息,通过cProfile运行这个脚本不会给我花在这些函数中的子函数上的时间functions@CorleyBrigman我听说过一次,这可能正是我想要的。提前谢谢,我会试试这个。