从cProfile获得更精确的结果

时间:2017-07-06 16:23:51

标签: python python-2.7 cprofile

我的问题与布里斯托马斯的问题非常相似:Python getting meaningful results from cProfile 但是我找不到令人满意的答案。 我会解释一下:

我得到了类似的结果,即大部分时间花在我使用的函数上(prox.py,rawprox.py和position.py)。

我可以优化在其他操作上花费的时间,但现在我真的想了解在我的功能中花费最多时间。

我遵循了arbarnert的回答,但看起来它只能起作用,因为整个代码是在pr.enable()和pr.disable()之间编写的。我的意思是cProfile结果仅限于在这些行之间写入的函数。这意味着为了使其工作,我不应该调用任何我想要的细节甚至一次,因为我不希望这些函数出现在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秒,而我想知道哪些操作占用时间 它们。

我显然不想在探查器行之间报告这些函数中的整个代码,因为函数在循环内部被调用,这将是一个令人难以置信的混乱(实际上,它将是完全可撤销的,我相信有人必须有想法这样做的方式)。

你会推荐任何解决方案吗?

0 个答案:

没有答案