Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从cProfile获得更精确的结果_Python_Python 2.7_Cprofile - Fatal编程技术网

Python 从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结果仅限于写在这些行之间的函数。这意味着,为

我的问题与Brice Thomas的问题非常相似: 然而,我找不到令人满意的答案。 我会解释:

我得到了类似的结果,即大部分时间都花在我使用的函数上(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秒,而我想知道其中哪些操作花的时间最多

我显然不想在分析器行之间报告这些函数中的全部代码,因为这些函数是在循环中调用的,这将是一个令人难以置信的混乱(实际上,这将是完全不可恢复的,我相信一定有人想到了这样做的方法)


您有什么建议的解决方案吗?

编写一个脚本,执行与您感兴趣的函数相同的过程,然后对其进行分析?您需要line_profiler…-而且,如果你要做很多分析,在ipython中使用%prun和%lprun magics…@wwii我就是这么做的,但这里有更多的细节:我有一个脚本,它使用了这些函数,我想了解详细信息,通过cProfile运行这个脚本不会给我花在这些函数中的子函数上的时间functions@CorleyBrigman我听说过一次,这可能正是我想要的。提前谢谢,我会试试这个。