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

2024-09-23 22:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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上读了一遍,但没什么能解释这句话的意思。它也没有提供任何关键字,我可以在谷歌上搜索,所以我被难住了。在

我正在分析的Python脚本查找质数。在

我看在第21行上花了5秒。我不明白另外43秒在做什么。在


Tags: pystringtimemainfunctionfilenamemethodmodule
2条回答

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

我没有使用cProfile,但在我看来,它根据函数名将运行时分配到bucket中。21秒被for语句中的内置函数range()使用。另外43秒不在一个单独的命名函数中,因此它所属的名称是main,如下所示:

if __name__ == '__main__':
    ...

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

相关问题 更多 >