了解CPU秒数

时间:2011-01-20 19:24:31

标签: python profile cpu-usage

考虑以下示例:

import hotshot
import hotshot.stats
import time

def test_sleep():
    time.sleep(1)

def main():
    prof = hotshot.Profile("lol.prof")
    prof.runcall(test_sleep)
    prof.close()

    stats = hotshot.stats.load("lol.prof")
    stats.sort_stats("time", "calls")
    stats.print_stats(20)

if __name__ == "__main__":
    main()

我得到了这个输出:

debian:# python lol.py
         1 function calls in 1.000 CPU seconds

   Ordered by: internal time, call count

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    1.000    1.000    1.000    1.000 lol.py:6(test_sleep)
        0    0.000             0.000          profile:0(profiler)

我希望我有0秒的CPU时间和1秒的待机时间。

我预计在忙碌循环时会有1秒CPU,而不是睡眠状态。

有人可以解释为什么我会得到这样的结果吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

这听起来像是一个HotShot错误 - 它没有从操作系统获得CPU时间,它已经过了时间(并且可能减去I / O等待时间,在这种情况下这将是零)。如果你做time python lol.py,你会发现你没有在忙碌的等待中。