tqdm 簡介及正確的打開方式

tqdm 簡介及正確的打開方式

查遍了網上資料,發現絕大中文的講解全都是一手帶過,還稱詳細,真是醉了,於是有該文,也算給自己做個筆記

1. 什麼是tqdm?

tqdm是一個快速的,易擴展的進度條提示模塊,官方網站點擊這裏

但是爲什麼要取名爲這樣呢,官方上說:

tqdm derives from the Arabic word taqaddum (تقدّم) which can mean “progress,” and is an abbreviation for “I love you so much” in Spanish (te quiero demasiado).

所以呢,tqdm其實本身就有進度的意思,另外在西班牙語中還有I love you so much的意思,由此看來,作者應該是個語言大家呢

2. tqdm的安裝

tqdm不是python的標準庫,但安裝很簡單,直接使用pip即可,當然爲了減少牆帶來的麻煩,可以指定鏡像源,關於pip鏡像源的更換,可以查看這篇文章

pip install tqdm -i https://pypi.tuna.tsinghua.edu.cn/simple/

或者,如果你使用Anaconda:

conda install -c conda-forge tqdm

3. 三大使用方式

  • 基於迭代類型

    # 向tqdm中傳入迭代類型即可
    from tqdm import tqdm
    import time
    
    text = ""
    for char in tqdm(["a", "b", "c", "d"]):
        time.sleep(0.25)
        text = text + char
    

    效果如下:

  • 手動更新進度

    # 使用with語句來控制tqdm的更新
    with tqdm(total=100) as pbar:
        for i in range(10):
            time.sleep(0.01)
            pbar.update(1)  # 每次更新的多少
           
    # 當然也可以不用with,將tqdm賦值給一個變量
    pbar = tqdm(total=100)
    for i in range(100):
        time.sleep(0.1)
        pbar.update(10)
    pbar.close()  # !! 注意這樣使用之後必須調用del 或者close方法刪除該變量
    

    效果如下:

  • 在命令行中使用

    # 將輸出的結果內容通過管道傳送給 tqdm
    time find . -name '*.py' -type f -exec cat \{} \; | tqdm | wc -l
    

    效果如下:

    命令行使用的更多參數可見官網

4. tqdm.tqdm 的使用方式

官方中對該模塊的講解甚多,這裏也着重講解

  • 參數

iterable=None

  • iterable
  • 可選
  • 裝飾進度條,如果爲空,需要手動進行更新

desc=None

  • str
  • 可選
  • 進度條的前面的提示

total=None

  • int 或者 float

  • 可選

  • 迭代元素的多少

    • 如果沒有指定,如果可以,使用len(iterable)代替
    • 如果是float(“inf”),只顯示統計的基本信息
    • 如果參數gui爲True,並且該參數需要後續更新,則初始化爲一個任意大的正數,如9e9

leave=True

  • bool
  • 可選
  • 如果True,顯示所有的進度條,如果是None,只顯示第一個進度條

file=None

  • io.TextIOWrapper 或者 io.StringIO
  • 可選
  • 指定輸出的路徑

ncols=None

  • int

  • 可選

  • 輸出信息的寬度

    • 指定了,動態改變進度條的寬度
    • 未指定,使用環境的寬度

mininterval=0.1

  • float
  • 可選
  • 最小進度顯示更新間隔

maxinterval=10.0

  • float
  • 可選
  • 最大進度顯示更新間隔

miniters=None

  • int 或者 float

  • 可選

  • 在迭代中顯示最小進度的間隔

    • 如果爲0,並且指定dynamic_miniters,會自動的調整到mininterval
    • 如果>0,跳過指定數目的迭代

ascii=None

  • bool 或者 str
  • 可選
  • 如果沒有指定或者爲False,使用平滑塊(默認),否則使用ascii字符,指定字符的時候長度需大於2

disable=False

  • bool
  • 可選
  • 是否禁用整個進度條,如果是None,在non-tty上禁用

unit='it'

  • str
  • 可選
  • 將用於定義每個迭代的單元的字符串

unit_scale=False

  • bool 或 int 或 float
  • 可選
  • 如果爲1或爲真,則迭代次數將自動減少/縮放,並在國際單一性系統標準之後添加一個度量前綴(kilo、mega等)[默認值:False]。如果有任何其他非零數,將按比例總計和n。

dynamic_ncols=False

  • bool
  • 可選
  • 設置爲True之後,ncols相當於無效

smoothing=0.3

  • float

  • 可選

  • 以指數型增長的速度進行增長

    • 0~1
    • gui模式下無效

bar_format=None

  • str

  • 可選

  • 自定義進度條字符格式,可能會影響性能

    • 具體見官網

initial=0

  • int 或 float
  • 可選
  • 初始計數值

position=None

  • int
  • 可選
  • 指定偏移量,從0開始

postfix=None

  • dic

  • 可選

  • 在進度條後指定額外的信息

    • 也可調用函數set_postfix實現

unit_divisor=1000

  • float
  • 可選
  • 除非unit_scale=True,否則忽略

write_bytes=None

  • bool
  • 可選
    • 如果None並且文件未指定,字節將用Python 2編寫
    • 如果爲真,也將寫入字節
    • 其他情況下,將默認爲unicode。

lock_args=None

  • tuple
  • 可選
  • 獲取中間輸出

gui=False

  • bool

  • 可選

  • 內部參數,使用tqdm.gui.tqdm替代

    • 設置True,會使用mtplotlib中的動畫輸出

**kwargs



  • 方法

update

  • 參數

    • int 或 float
    • 可選
  • 手動更新進度條信息

close

  • 清除並關閉進度條

clear

  • 清除當前顯示的進度條

refresh

  • 強制刷新當前的進度條

  • 參數

    • nolock

      • bool

        • True

          • 不鎖
        • False

          • 調用內部的函數acquire
      • 可選

    • lock_args

      • tuple

      • 可選

      • 傳入到內部的函數acquire

        • 指定之後,只有acquire返回True纔會顯示進度條

unpause

  • 重新啓動上一次打印時tqdm的計數器

reset

  • 參數

    • total

      • int or float
      • 可選
      • 新的進度條的total
  • 重新指定total爲0以重複利用

set_description

  • 參數

    • desc

    • refresh

      • 強制刷新
  • 設置/修改進度條的提示,字符串後自動添加 “:”

set_description_str

  • desc
  • refresh
  • 設置/修改進度條的提示,字符串後不添加 “:”

set_postfix

  • 參數

    • ordered_dict
    • refresh
    • **kwargs
  • 設置/修改進度條後的提示信息

set_postfix_str

  • 參數

    • s
    • refresh
  • 以字符串的形式直接顯示信息

即爲下方圖片

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章