詳解使用Python中的tqdm模組顯示進度條
阿新 • • 發佈:2020-12-10
其他關於Python的總結文章請訪問:https://blog.csdn.net/qq_38962621/category_10299380.html
詳解使用Python中的tqdm模組顯示進度條
Python中可以使用tqdm
包來顯示進度條。進度條的原理其實很簡單,就是不斷地刪除已經列印的內容,然後重新寫出新的進度,從而完成在同一行中的進度條再不斷增長的效果。tqdm
不是Python自有的模組,需要安裝,比如使用pip
安裝:
pip install tqdm
可以從包tqdm
中引入所有內:
from tqdm import *
更好的一種方式是根據需求引入一些常用的或者需要的類、方法:
from tqdm import tqdm, trange
注意,第一個tqdm
是包名,第二個tqdm
是類名,恰好同名,不要誤用 import tqdm,trange
這樣的程式碼來(錯誤地)引入tqdm
類和trange
方法。
tqdm
的使用方法大概有如下幾種方式:
直接封裝可迭代物件
可以直接使用tqdm
建立一個類例項,第一個引數是一個可迭代物件,即tqdm
可以直接包裝一個可迭代物件,從而進行迭代時就會使用進度條了,比如range(100)
一個簡單的可迭代物件:
from tqdm import tqdm
import time, random
for i in tqdm(range(10) ):
time.sleep(random.random())
使用簡化的trange
上文中一個簡單的使用tqdm
直接封裝range
可迭代物件的程式碼可以簡單地使用trange
代替,即 trange(X) = tqdm(range(X))
,例如下邊的例子等同於上邊中的第一個例子:
from tqdm import trange
import time, random
for i in trange(10):
time.sleep(random.random())
例項化一個tqdm類
如果想對進度條進行更加詳細的定製,可以例項化一個tqdm
類的例項,然後使用它的方法來更好地發揮作用
例項化tqdm
類時有一些其他的可能比較常用的引數:
iterable
(第一個引數):一個可迭代物件desc
:對進度條的描述,會顯示在進度條前邊total
:預期的總迭代次數(預設會等於iterable
的總次數,如果可數的話)ncols
:總長度mininterval
:最小的更新時間間隔,預設為0.1maxinterval
:最大的更新時間間隔,預設為10
一個tqdm
例項的常用方法:
set_description
:設定顯示在進度條前邊的內容set_postfix
:設定顯示在進度條後邊的內容update
:對進度進行手動更新close
:關閉進度條例項,實際上,最好在使用完一個tqdm
類的例項後使用close
方法清理資源,就像使用open
開啟的檔案一樣,從而釋放記憶體。
一個例子:
from tqdm import tqdm
import time, random
p_bar = tqdm(range(10), desc="A Processing Bar Sample: ", total=10, ncols=100)
for i in p_bar:
time.sleep(random.random())
p_bar.close()
使用with語句
因為一個例項化的tqdm
也需要在使用完畢後通過close
方法清理資源,這和開啟一個檔案進行處理是很類似的,因此同樣可以使用with
語句,讓其在執行完後自動清理,就不再需要使用close
方法手動關閉了:
from tqdm import tqdm
import time, random
with tqdm(total=100) as p_bar:
for i in range(50):
time.sleep(random.random())
p_bar.update(2)
p_bar.set_description("Processing {}-th iteration".format(i+1))