在我們撰寫 Python 程式碼的時候,有時候,我們會希望我們正在做的工作能夠視覺化顯示『進度條』,好方便我們掌握我們的程式直到到哪裡了。如果是這種需求的話,除了自己寫進度條外,也可以使用 Python 當中比較知名的進度條模組——『tqdm』。
tqdm 的官方網站於此: https://pypi.org/project/tqdm/
tqdm ,也是阿拉伯語當中的『進度條』的意思。只需要安裝這個模組,我們就可以在任何需要迭代的地方使用 tqdm 來顯示進度。
那麼,以下開始介紹怎麼使用 tqdm。
tqdm 使用方法
由於這個模組並不是 Python 自帶的,所以如果我們第一次使用,我們要使用以下指令下載:
pip3 install tqdm
安裝好後我們來看段 Sample Code:
# -*- coding: utf-8 -*-
from time import sleep
from tqdm import tqdm, trange
for i in tqdm(range(1000)):
sleep(0.01)
Output:
100%|██████████| 1000/1000 [00:10<00:00, 95.76it/s]
sleep() 函式是讓程式每次執行到這裡時停止 0.01 秒,總共 1000 次。我們可以看到,底下的輸出有了進度條。你可以實際測試看看,應該會看到進度條增長。
另外,我們也可以使用 trange()
來實現同樣的功能。
for i in trange(1000):
sleep(0.01)
Output:
100%|██████████| 1000/1000 [00:10<00:00, 95.72it/s]
這樣也是可以的。
另外,不僅僅是使用在 for 迴圈裡頭,我們可以自己定義在什麼時候推進進度。以下是一段簡單的範例:
times = 0
progress = tqdm(total=1000)
while times < 1000:
progress.update(1)
times += 1
sleep(0.01)
Output:
100%|██████████| 1000/1000 [00:10<00:00, 95.68it/s]
看起來是一樣的功能,但我們這次可以自己選擇在什麼時候將 progress.update()
,也可以自己選擇 update()
的數量。
順帶一提,如果是在 Google Colab 或是 Kaggle Notebook、Jupyter Notebook 等平台上,tqdm 的寫法是得用他們提供的 notebook 包:
from tqdm.notebook import tqdm
當然你也可以自己客製化自己的進度條
當然,除了使用 tqdm 模組來實現自己的進度條外,你可以自己寫自己的進度條。
以下我來拋磚引玉一下,讓各位見笑了:
from time import sleep
temp = 0
total = 1000
for n in range(1000):
temp += 1
print('\r' + '[Progress]:[%s%s]%.2f%%;' % (
'█' * int(temp*20/total), ' ' * (20-int(temp*20/total)),
float(temp/total*100)), end='')
sleep(0.01)
Output:
[Progress]:[███████████████████]100.00%
大家若有興趣,也不妨寫寫看自己的進度條如何?我所寫的進度條比較死,沒辦法如同 tqdm 一般任意選擇更新的時間點——但這也是我們可以任意修改的地方。
挑戰看看寫成 Class,然後可以讓使用者使用 update() 函式來更新進度吧?
我有空的時候,也想進行這樣的挑戰呢。