我有线程API调用需要协调API调用时间。
应用程序的性质意味着我需要在最大API命中率下运行极薄的利润率。
目前,我正在协调使用存储最后API调用时间的共享对象从本地计算机到远程API进行API调用的时间。
考虑本地机器与本机之间的连接速度差异。远程API我正在使用回退响应测试,如果2次调用过早地触及API,则会重新提示API调用,从而导致响应错误。 (我真的不喜欢这个解决方案......如果你有更好的解决方案,请加入。)
问题:
time.time()在所有平台上都没有给我足够的精确度。我需要毫秒级的精度。
time.clock()据我了解处理过程时间,而不是绝对时间。因此,如果CPU处于不同的负载下,它将根据这些负载差异从绝对时间向量矢量化。这是对的吗?
因此,考虑到这一点,以毫秒精度获得API调用之间的时间差异的最佳方法是什么?
答案 0 :(得分:1)
精度仍取决于平台,但您应使用timeit.default_timer
。
来自docs:
以特定于平台的方式定义默认计时器。在Windows上,time.clock()具有微秒粒度,但time.time()的粒度是1/60秒。在Unix上,time.clock()具有1/100秒的粒度,而time.time()更精确。在任一平台上,default_timer()都会测量挂钟时间,而不是CPU时间。这意味着在同一台计算机上运行的其他进程可能会干扰计时。