2016-11-09 45 views
0

我有需要協調API調用時間的線程API調用。如何以毫秒級精度獲得API調用之間絕對的時間差異?

應用程序的性質意味着我需要運行極薄的利潤率以抵禦最大API命中率。

目前,我正在協調使用存儲最後一次API調用時間的共享對象將API調用從本地機器發送到遠程API的時間。

要佔本地機器&遠程API之間的連接速度差我使用的是回退響應測試,重新提示的API調用,如果2個呼叫過於很快打出的API,導致響應錯誤。 (我真的不喜歡這種解決方案雖然...如果你有一個更好的,請附和)

問題:

了time.time()不給我上的所有足夠的精度平臺。我需要毫秒的精度。

time.clock()據我瞭解處理時間,而不是絕對時間。因此,如果CPU處於不同的負載下,則會根據這些負載差異從絕對時間開始執行。它是否正確?

因此,考慮到這一點,以毫秒級的精度獲得API調用之間的時間差異的最佳方法是什麼?

+0

就我所知,並非所有的API調用都會返回一個時間戳。是否有必要設置參數以在每次通話中獲得時間戳? – Emily

回答

1

精度仍將取決於平臺,但您應該使用timeit.default_timer

docs

定義一個默認的定時器,在特定平臺的方式。在Windows上,time.clock()的粒度爲微秒,但time.time()的粒度爲1/60秒。在Unix上,time.clock()具有1/100秒的粒度,而time.time()更精確。在任一平臺上,default_timer()都會測量掛鐘時間,而不是CPU時間。這意味着在同一臺計算機上運行的其他進程可能會影響計時。

+0

我不確定你的意思。如果你禁用當然依賴於API的網絡連接將會提供不正確的時間,但是任何事情...... –

相關問題