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