1. 程式人生 > 其它 >詳解使用Python中的tqdm模組顯示進度條

詳解使用Python中的tqdm模組顯示進度條

技術標籤:Python語言總結pythontqdm進度條

其他關於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.1
  • maxinterval:最大的更新時間間隔,預設為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))

在這裡插入圖片描述