你還在使用打樁來記錄 for 循環嗎?
在平時使用Python進行編寫代碼時,我們在編寫需要執行較長時間的任務時,我們經常會使用print()來進行打樁查看我們的執行進度。其實最好的是可以實現一個進度條,使用一個專門的進度條庫會更加方便。
在這里我最推薦的進度條庫就是tqdm。這個庫使用簡單,可以在循環、函數等多種場景快速添加進度條。而且設計優雅,提供了豐富的定制化選項。
用法
(1) 下載tqdm庫
pip install tqdm
然后使用import tqdm導入就可以使用了
(2) 傳入可迭代對象
這里我們使用for循環來舉例說明
from tqdm import tqdm
import time
for item in tqdm(range(100)):
time.sleep(0.2)
正常我們在使用for循環的時候是后面直接跟range循環數的,在這里我們在range外面加了一個tqdm(),這樣在運行for循環后就會顯示當前程序運行的進度,并且以進度條展示出來。
這樣我們就可以根據進度條很清晰的看到當前for循環的執行進度了,比我們直接用print打樁簡直好的不是太多。
當前,這里有很多種寫法的,比如這里也可以使用tqdm.trange()
import tqdm
import time
for item in tqdm.trange(100):
time.sleep(0.2)
上面的實現效果和tqdm()效果是差不多的,我們也可以在后面加上參數為進度條進行命名,
import tqdm
import time
for i in tqdm.tqdm(range(100),desc="這是進度條的名稱"):
time.sleep(0.2)
命名后在下方的進度就會顯示我們的指定名稱
3.循環嵌套進度
tqdm支持在循環中嵌套循環,每個循環都可以顯示獨立的進度條。實現嵌套進度條只需要傳入參數positinotallow=0即可:
import tqdm
import time
for i in tqdm(range(5), position=0):
for j in tqdm(range(100), position=1):
time.sleep(0.2)
4.手動調整
可以使用with語法手動調整for循環的循環數量
import tqdm
import time
with tqdm(total=50) as number: #總進度50
for item in range(10):
time.sleep(0.2)
number.update(10)
上面代碼的意表示程序的總進度是50,然后循環10次運行,每一次循環執行10/50=20%的進度,這個20%是由update()中傳入的值10來除以總進度total=50計算出來的百分比。
值得注意的是,例如上面的代碼中,我們循環了10次,但是每一次都運行20%的進度,那么我們運行五次就100%了,剩下的五次循環就不會記錄在執行的進度條中了
同理可得:
import tqdm
import time
with tqdm(total=50) as number: #總進度50
for item in range(2):
time.sleep(0.2)
number.update(10)
如果我們只循環兩次的話,則總共就只會記錄40%的進度
手動調整這個功能一般常用于郵件、消息、數據傳輸等場景的使用,我們可以根據自己調整的進度條實時查看傳輸的進度。