这个Python cProfile输出是什么意思?

时间:2011-05-26 04:34:37

标签: python profiling cprofile

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    1    0.000    0.000   65.417   65.417 <string>:1(<module>)
    1   43.675   43.675   65.417   65.417 primenumber_o.py:3(main)
    1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
99999   21.742    0.000   21.742    0.000 {range}
    2    0.000    0.000    0.000    0.000 {time.time}

具体来说,第三行。我读了cProfile,但没有解释这条线的含义。它也没有提供我可以在Google上搜索的任何关键字,所以我很难过。

我正在分析的Python脚本找到素数。

我看到第5行在循环中花了21秒。我不明白的是其他43秒正在做什么。

2 个答案:

答案 0 :(得分:1)

第三行是文件中不是range()的所有代码。

答案 1 :(得分:0)

我没有使用过cProfile,但它在我看来它根据函数名称将运行时分配到存储桶中。 range()语句中的内置函数for正在使用21秒。其他43秒不在单独的命名函数中,因此它被认为属于main的名称,如:

if __name__ == '__main__':
    ...

如果你将循环体放入一个函数中,那么43秒(或大部分)会出现在那里。如果将主体拆分为多个功能,您将获得更细粒度的分析。

相关问题