如何以毫秒精度获得API调用之间的绝对时间差



我有需要协调API调用时间的线程API调用。

应用程序的性质意味着我需要在最大API命中率上运行极薄的空白。

目前,我正在使用存储上次API调用时间的共享对象来协调从本地机器到远程API的API调用时间。

考虑本地机器之间的连接速度差异;我正在使用回退响应测试,如果2个调用过早地击中API,导致响应错误,则重新执行API调用。(但我真的不喜欢这个解决方案……如果你有更好的,请加入进来。

问题:

time.time()不能在所有平台上提供足够的精度。我需要毫秒级的精度

据我所知,

time.clock()处理的是进程时间,而不是绝对时间。因此,如果CPU处于不同的负载下,它将根据这些负载差异从绝对时间上向外偏移。这是正确的吗?

因此,考虑到这一点,以毫秒精度获得API调用之间的时间差的最佳方法是什么?

精度仍然取决于平台,但您应该使用timeit.default_timer

From the docs:

以特定于平台的方式定义默认计时器。在Windows上,time.clock()具有微秒粒度,但time.time()的粒度是1/60秒。在Unix上,time.clock()的粒度为1/100秒,而time.time()要精确得多。在这两个平台上,default_timer()测量的是挂钟时间,而不是CPU时间。这意味着在同一台计算机上运行的其他进程可能会干扰计时。

最新更新