使用Python tqdm讓你的代碼進度條更豐富有趣

在編寫長時間運行的代碼時,我們常常會使用進度條來實時顯示任務的進度。Python提供了許多實現進度條的庫,其中tqdm是一個高度可定製的庫,它可以讓你的代碼進度條更加豐富有趣。

一、簡介

tqdm是一個Python的進度條庫,它可以在循環迭代時實時顯示任務的進度,支持多種方式的進度條樣式,可以自定義進度條的位置、顏色、速度等。安裝tqdm庫十分簡單,只需在終端輸入以下命令:

    pip install tqdm

安裝完成後,我們可以直接在代碼中使用它,來創建漂亮的進度條。

二、基礎使用

讓我們首先看一下最簡單的使用方式。下面的代碼演示了tqdm在循環中的基本用法:

    # 導入tqdm模塊
    from tqdm import tqdm
    
    # 執行循環
    for i in tqdm(range(1000)):
        # 這裡是循環的操作

以上代碼使用了tqdm工具實現了一個簡單的進度條。通過tqdm函數,我們將range(1000)傳遞進去,然後在for循環中使用tqdm遍歷range(1000)中的元素。tqdm將自動顯示進度條,並實時更新進度。我們還可以僅僅使用tqdm函數,如下所示:

    # 導入tqdm模塊
    from tqdm import tqdm
    
    # 執行循環
    for i in tqdm(range(1000)):
        # 這裡是循環的操作

此時會使用默認樣式顯示進度條,如下所示:

  5%|███▏                                                                             | 50/1000 [00:00<00:01, 489.96it/s]

默認樣式比較簡單,只有一個進度條,但我們可以使用一些其他的樣式來更好地展示進度條,後面會提到。

三、自定義樣式

tqdm是一個高度可定製的庫,你可以使用各種可用參數來定製進度條。下面介紹一些可用的參數:

  • total:表示迭代次數。
  • position:進度條的位置。
  • desc:進度條的描述信息。
  • unit:進度條每個單位的描述信息。
  • bar_format:進度條的樣式,可以自定義。

下面的代碼演示了如何使用以上參數進行自定義。

    # 導入tqdm模塊
    from tqdm import tqdm
    
    # 使用自定義樣式
    with tqdm(total=100, position=0, desc='Downloading', unit='file') as pb:
        for i in range(100):
            pb.update(1)

以上代碼定義了進度條總共需要迭代100次,進度條顯示在第一行,進度條的描述為’Downloading’,每個單位為’file’。而pb.update(1)則表示迭代次數加1。這段代碼的效果如下:

Downloading: 100%|█████████████████████████████████████████████████████████████████████| 100/100 [00:00<00:00, 4811.35it/s]

可以看到,我們自定義的樣式不僅包含了進度條,還有進度條當前的百分比,已處理的文件數、總文件數、處理速度等信息。所有這些信息都可以在bar_format這個參數中進行自定義。

四、更多自定義樣式

tqdm提供了許多內置的進度條樣式,我們可以從中選擇適合自己項目的樣式。下面是一些常見的樣式:

  • ‘bar’: 進度條樣式,如[=== ]
  • ‘barh’: 水平樣式,如[= ]
  • ‘progress’: 進度和百分比
  • ‘percentage’: 進度百分比
  • ‘count’: 進度條計數
  • ‘n’: 顯示n的當前值

在我們的代碼中,可以設置如下參數進行自定義樣式:

    # 導入tqdm模塊
    from tqdm import tqdm
    
    # 使用進度計數樣式
    with tqdm(range(1000), desc='Processing', unit='document', bar_format='{l_bar}{bar:20}{r_bar}{bar:-20b}') as pb:
        for i in pb:
            # 這裡是循環的操作
        pb.update(1)

以上代碼使用了默認的樣式,但是在此基礎上設置了進度條的左邊緣、進度條、右邊緣和進度條兩端之間的長度分別為1、20、1、20。效果如下:

Processing: 100%|████████████████████████████████████████████████████████████████| 1000/1000 [00:00<00:00, 44730.08document/s]

除了基本樣式之外,我們還可以使用tqdm提供的更豐富的樣式,如下所示:

    # 導入tqdm模塊
    from tqdm import tqdm
    
    # 使用設置顏色樣式
    with tqdm(range(100), bar_format='\x1b[32m{bar}\x1b[0m') as pb:
        for i in pb:
            # 這裡是循環的操作
            pb.set_postfix({'process': i})

以上代碼使用了綠色的進度條樣式,並且在進度條右邊顯示了當前進度。效果如下:

 35%|██████████████████████████▋                                                | 35/100 [00:00<00:00, 343.92it/s, process=35]

可以看到,我們的進度條不僅可以改變顏色,還可以顯示進度條右邊的其他信息。

五、總結

使用Python tqdm庫可以讓你的代碼進度條更加豐富多彩,許多內置的樣式可以讓我們自定義不同的進度條樣式。通過tqdm,我們能夠更好地把握任務進度,讓編寫代碼更加愉快。

如果想要學習更多關於tqdm的使用,可以參考它的官方文檔: https://github.com/tqdm/tqdm

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/285053.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 15:43
下一篇 2024-12-22 15:43

相關推薦

發表回復

登錄後才能評論