我试图找出为什么某些功能需要很长时间才能完成 我正在使用这样的探查器:
ipdb> import profile
ipdb> profile.runctx('report.generateOutput()', globals(), locals())
1 function calls in 40.783 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
0 0.000 0.000 profile:0(profiler)
1 40.783 40.783 40.783 40.783 profile:0(report.generateOutput())
正如你所看到的,这并没有多大用处 我需要的是一些关于所有时间花在哪里的详细信息,我在这里缺少什么?
答案 0 :(得分:2)
配置文件report.generateOutput(),而不是函数调用。
要使用主入口点foo()来分析应用程序,您需要将以下内容添加到模块中:
import cProfile
cProfile.run('foo()')
也许the python docs on profiling会有帮助。
答案 1 :(得分:0)
你说两件不同的事情:
“我需要的是一些关于 所有时间花费的详细信息”
“我试图找出为什么某些功能需要很长时间才能完成”
你知道,这些不是一回事。我认为最好问为什么而不是 where ,因为其中实际上非常模糊。
例如,假设存在一个“瓶颈”,其中包含大量字符串的冒泡类型。花在哪里的时间?它是在冒泡排序的内部循环中,还是在字符串比较中? Profilers会说后者,但是它存在的原因和实际问题是调用堆栈的更高。