0
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 脚本会找到素数。

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

4

2 回答 2

1

第三行是文件中所有不是range().

于 2011-05-26T04:47:12.950 回答
0

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

if __name__ == '__main__':
    ...

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

于 2011-05-26T04:46:56.893 回答