我使用了两个time.time()调用之间的差值来衡量我的应用程序完成网络请求所花费的时间。应用程序正在Debian服务器上运行。问题在于,我会定期在这些值之间产生负差,好像时间在倒退。
我写了一个简单的例子:
import time
while True:
print("OK")
start_time = time.time()
time.sleep(0.01)
end_time = time.time()
diff = end_time - start_time
if diff < 0:
print(start_time)
print(end_time)
print(diff)
break
这是输出(这是可重复的,只需几秒钟即可减少时间):
...
OK
OK
OK
OK
OK
OK
OK
1558957392.940343
1558957342.089879
-50.8504638671875
在我的Mac中,此代码没有此类问题。现在,我在服务器上切换到time.perf_counter()
,一切正常。文档说:
虽然此函数通常返回不减值,但它可以 如果系统时钟已返回,则返回一个比上一个调用更低的值 在两个通话之间退后。
但是我想知道:为什么在我的Debian服务器中只花几秒钟就能得到错误,为什么时差总是约50.85秒(最后3次运行:50.84628367424011、50.84458661079407、50.84599566459656)?