考虑以下示例:
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,而不是睡眠状态。
有人可以解释为什么我会得到这样的结果吗?
谢谢!
答案 0 :(得分:1)
这听起来像是一个HotShot错误 - 它没有从操作系统获得CPU时间,它已经过了时间(并且可能减去I / O等待时间,在这种情况下这将是零)。如果你做time python lol.py
,你会发现你没有在忙碌的等待中。