我的问题与布里斯托马斯的问题非常相似: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秒,而我想知道哪些操作占用时间 它们。
我显然不想在探查器行之间报告这些函数中的整个代码,因为函数在循环内部被调用,这将是一个令人难以置信的混乱(实际上,它将是完全可撤销的,我相信有人必须有想法这样做的方式)。
你会推荐任何解决方案吗?