使用内置模块计算精确时间差

3
start = time.clock()
print("test ")
time.sleep(1)
print(time.clock()-start)

最后一行通常打印出结果,但有时会给出小于1的结果(如0.9962501944182808或0.9886929485969909等)。

如果我使用time.sleep(1)使代码休眠1秒钟,我会认为结果总是大于1。

它不够精确,那么如何使用内置模块计算代码消耗的时间?


4
time.sleep()不是非常精确的(在任何非实时操作系统上都不可能精确)。正如time.sleep()文档所述:实际挂起时间可能小于所请求的时间,因为任何被捕获的信号都会在该信号的捕获例程执行后终止sleep()。此外,由于系统中其他活动的调度,挂起时间可能比请求的时间长一个任意的量。 - zwer
相关链接:https://dev59.com/pHNA5IYBdhLWcg3wAItP 特别是这个答案:https://dev59.com/pHNA5IYBdhLWcg3wAItP#1133879 - Taku
我猜这是Windows系统?(微软的实现更倾向于稍短的休眠时间)。 - Charles Duffy
1个回答

2
文档中可以了解到:
由于任何捕获的信号都会在该信号的捕获程序执行后终止 sleep(),所以实际挂起时间可能会少于请求时间。此外,由于系统中其他活动的调度,挂起时间可能比请求时间长任意数量。
此外,您可以阅读此答案,了解 sleep 函数的精确度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接