Python: 取得 unix timestamp,哪種方式更快?



前言

  • 協作專案時剛好看到兩種取得 unix time (epoch time) 的寫法,順便用 timeit 比較一下效能。



說明

unix timestamp?

  • 1970-01-01 00:00:00 開始計算的秒數,UTC

  • 例如本文編輯時間,大約是 1701750420,換算:2023-12-05 04:27:00 週二 (UTC)


用 datetime 取得 unix timestamp

1
2
from datetime import datetime
datetime.now().timestamp()

用 time 取得 unix timestamp

1
2
import time
time.time()

效能比較

  • timeit 執行十萬次比較所需的時間
1
2
3
4
5
>>> timeit.timeit("datetime.now().timestamp()", number=100000, setup='from datetime import datetime')
0.09604033301002346

>>> timeit.timeit("time.time()", number=100000, setup='import time')
0.017747000005329028

可以看到差了 5~6 倍!


Note

  • 如上面例子,在使用 timeit 時,如果需要特別 import、或是預先指派變數,就要在 setup 裡面指定。



總結

  1. 如果只需要取得當下 unix timestamp,就用 time.time()

  2. 如果有預先做 datetime 相關計算處理,例如加減天數、分鐘數、以及轉換時區等等,才使用 datetime.timestamp() 做轉換




REF

Licensed under CC BY-NC-SA 4.0
最後更新 2024-05-08 10:47

主題 StackJimmy 設計