【问题标题】:What does this Python cProfile output mean?这个 Python cProfile 输出是什么意思?
【发布时间】:2011-05-26 04:34:37
【问题描述】:
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 秒在做什么。

【问题讨论】:

    标签: python profiling cprofile


    【解决方案1】:

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

    【讨论】:

    • AHAHAHHAHAH...这篇文章被放入我的审核队列,因为它被标记为低质量...80)也许需要这样的代表限制?我非常有信心您可能知道您在这里做什么。 ;o)
    【解决方案2】:

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

    if __name__ == '__main__':
        ...
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-09
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      相关资源
      最近更新 更多