微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python cProfile输出是什么意思?

如何解决Python 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秒在做什么。     

解决方法

我没有使用过cProfile,但是在我看来,它是根据函数名称将运行时分配到存储桶中的。
for
语句中的内置函数
range()
使用21秒。另外43秒不在单独的命名函数中,因此认为属于该函数的名称为
main
,例如:
if __name__ == \'__main__\':
    ...
如果将循环的主体放入函数中,则将在其中显示43秒(或大部分)。如果将主体拆分为多个功能,则将获得更细粒度的分析。     ,第三行是文件中不是
range()
的所有代码。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。