我正在使用 cProfile 和以下命令分析 python 脚本 main.py
:
python -m cProfile -s tottime main.py
我得到的输出是(仅复制粘贴输出的顶行):
10184337 function calls (10181667 primitive calls) in 13.597 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1 4.674 4.674 13.598 13.598 main.py:2(<module>)
2142 2.964 0.001 4.663 0.002 load_aerdat3.py:61(getPacket)
459 2.381 0.005 2.381 0.005 {waitKey}
1667989 1.170 0.000 1.170 0.000 {numpy.core.multiarray.array}
...
tottime
(4.674) 如何与 cumtime
的 main.py
(13.598) 不同,因为这个函数(即整个脚本)只被调用一次? 最佳答案
tottime
是单独在函数中花费的总时间。 cumtime
是在函数中花费的总时间加上该函数调用的所有函数。
如果函数从不调用其他任何东西,则这两个值将相同。例如, {waitKey}
似乎没有调用其他任何东西:
459 2.381 0.005 2.381 0.005 {waitKey}
但是
getPacket()
调用其他函数,所以它的 cumtime
列包括这些调用的时间: 2142 2.964 0.001 4.663 0.002 load_aerdat3.py:61(getPacket)
main.py
行覆盖了函数外运行的所有代码,全局代码;仅该级别的语句运行需要 4.674 秒,但由于这些语句调用了其他函数,因此 main.py
代码加上所有函数调用的总累积时间为 13.598 秒。从 documentation :
关于python - cProfile 输出上的 tottime 和 cumtime 有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40404007/