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