從零開始學Python (20) — 時間量測與效率檢驗:你的時間也不是你的時間

Day 20 時間量測與效率檢驗:你的時間也不是你的時間

Chih-Yu Lin

--

註:本篇文章同步刊載於iT邦幫忙,為鐵人賽之系列文章。
https://ithelp.ithome.com.tw/articles/10247284

我們先來解一下昨天的練習吧!

>>> from datetime import date, datetime, time ,timedelta
>>> now = date(2020, 10, 1)
>>> mem = [date(2021,8,14), date(2021,2,14), date(2021,3,14), date(2020,10,3), d
ate(2021,11,3)]
>>> diff = sorted([d - now for d in mem]) # 你沒看錯,是可以排序的~
>>> diff
[datetime.timedelta(days=2), datetime.timedelta(days=136), datetime.timedelta(da
ys=164), datetime.timedelta(days=317), datetime.timedelta(days=398)]
>>> for d in diff:
... print(str(d)) # 這樣顯示也可以啦!但好像可以簡單一點XD
...
2 days, 0:00:00
136 days, 0:00:00
164 days, 0:00:00
317 days, 0:00:00
398 days, 0:00:00
>>> days = [d.days for d in diff] # deltatime也可以單取其中的單位
>>>
>>> days
[2, 136, 164, 317, 398]

糟糕,這篇文貼出來的時間點第一個重要日子已經過了,
只好希望小亦有記得阿啾的生日了XD

上一篇我們提到了可以利用time.time()來計算,
但如果要取平均的話,可能要自己寫迴圏來處理,
但寫迴圏這件事情從根本上就有些破壞原本的結構,
那麼該怎麼作比較好呢?
我們可以利用timeit這個模組。
當我們想簡單計算某個指令的耗時的時候,
我們可以先用直接在命令提示字元裡下指令的方法,
比方說:

C:\Users\Desolve\utils>python -m timeit "'-'.join(str(n) for n in range(100))" # 今晚,我想來點字串組合套餐
10000 loops, best of 5: 23 usec per loop

--

--

Chih-Yu Lin

LeetCode、Python、Java、Android;第11屆iT邦幫忙鐵人賽Software Development組優選(從LeetCode學演算法);HiSKIO特約講師;課程優惠: https://bit.ly/lc2022all ;合作請洽: learnwithdesolve@gmail.com