盤一盤 Python 進度庫:tqdm的自定義能力
近工作需要寫一些耗時的 python 小腳本,普通黑窗(控制臺)執行即可。但沒有進度可不行呀。于是用一些常見的進度提示庫- tqdm 。
今天我們會羅列幾個關于 tqdm 常見自定義場景。并嘗試對動態更新描述信息做簡單的封裝,積累一些通用模塊。
pip 安裝:
pip install tqdm
簡單用法很簡單:
控制臺顯示:
有人可能會覺得默認的外觀太普通了。 tqdm 提供了豐富的自定義選項,可以讓你根據不同的需求調整進度條的外觀和行為,接下來看看他的自定義能力。
tqdm 函數參數:
- desc :進度條的描述信息。
- total :總迭代次數(默認為 None ,會自動檢測)。
- leave :是否在完成時保留進度條(默認為 True )。
- ncols :進度條的最大寬度(列數)。
- ascii :是否使用 ASCII 字符顯示進度條(默認為 False )。
- bar_format :自定義進度條的格式字符串。
- colour :設置進度條的顏色。
1. 基本自定義
- desc="Processing" :設置進度條的描述信息。
- ascii=False :不使用 ASCII 字符顯示進度條。這個參數默認就是 False ,如果設置為 True,進度條就變成 #
- ncols=75 :設置進度條的最大寬度為 75 列。
第一個是 ascii = False。第二個是 ascii = True
2. 自定義進度條格式
你可以通過 bar_format 參數來自定義進度條的格式。并且有一些信息只有 tqdm 才"知道"的信息,因此,它內置了一些占位符:
- {l_bar} :左邊的進度條部分。
- {bar} :進度條本身。
- {r_bar} :右邊的信息部分。
- {n} :當前迭代次數。
- {total} :總迭代次數。
- {percentage} :百分比。
- {rate} :每秒迭代次數。
- {elapsed} :已用時間。
- {remaining} :剩余時間。
3. 設置進度條顏色
你可以通過 colour 參數來設置進度條的顏色。 colour 可以接受多種顏色名稱或 RGB 值。
5. 動態更新描述信息
這個是最常用的功能,你可以在循環中動態更新進度條的描述信息。
- 行5: tqdm(total=100, desc="動態更新描述信息") :創建一個進度條對象,并設置總迭代次數為 100。 with 語句確保在退出塊時自動關閉進度條。
- 行7-17:在特定的迭代次數( i == 20 , i == 40 , i == 60 , i == 80 )時,調用 pbar.set_description() 方法來更新進度條的描述信息。
- pbar.update(1) :每次迭代增加進度條 1 個單位。這是必須的,否則進度條不會更新。
上面的寫法侵入性太強了,一大堆關于進度的代碼混到主循環里面。我們嘗試做一些簡單封裝。
先看看封裝后的使用代碼有哪些改進:
- 行4:使用 with 語法創建和使用 CustomTqdm 對象。當退出 with 語句塊時, __exit__ 方法會自動調用 pbar.close() 關閉進度條。
- 行6-9: 在循環之前,配置不同的更新點。避免循環中出現過多的進度相關代碼
- 行13:在循環中,每次迭代調用 pbar.update(1) 更新進度條。
看看實現代碼: