最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python進(jìn)度條神器tqdm的使用指南

 更新時間:2026年03月26日 09:22:46   作者:白酒永遠(yuǎn)的神  
在日常使用 Python 進(jìn)行數(shù)據(jù)處理、模型訓(xùn)練或批量任務(wù)時,我們常常會遇到長時間運(yùn)行的循環(huán),tqdm是一個快速、可擴(kuò)展且美觀的進(jìn)度條庫,能夠輕松地為你的 Python 循環(huán)添加進(jìn)度提示,本文給大家介紹了Python進(jìn)度條神器tqdm的使用指南,需要的朋友可以參考下

在日常使用 Python 進(jìn)行數(shù)據(jù)處理、模型訓(xùn)練或批量任務(wù)時,我們常常會遇到長時間運(yùn)行的循環(huán)。如果沒有一個直觀的反饋機(jī)制,用戶很容易誤以為程序卡死或者失去耐心。這時候,tqdm 就派上用場了!

tqdm(讀作 “taqadum”,阿拉伯語意為“進(jìn)展”)是一個快速、可擴(kuò)展且美觀的進(jìn)度條庫,能夠輕松地為你的 Python 循環(huán)添加進(jìn)度提示。它輕量、高效,并且兼容性極強(qiáng)。

一、安裝 tqdm

tqdm 是一個第三方庫,可以通過 pip 輕松安裝:

pip install tqdm

如果你使用的是 Jupyter Notebook,建議同時安裝 ipywidgets 以獲得更好的交互體驗:

pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension

二、基本用法:一行代碼添加進(jìn)度條

最簡單的用法就是將 tqdm 包裹在任何可迭代對象外面:

from tqdm import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(0.01)  # 模擬耗時操作

運(yùn)行后你會看到類似這樣的輸出:

100%|██████████| 100/100 [00:01<00:00, 95.23it/s]

其中包含:

  • 進(jìn)度百分比
  • 可視化進(jìn)度條
  • 已完成 / 總數(shù)
  • 已用時間 < 預(yù)計剩余時間
  • 每秒迭代次數(shù)(iterations per second)

三、常用參數(shù)詳解

tqdm() 支持多個參數(shù)來自定義進(jìn)度條行為:

參數(shù)說明
desc進(jìn)度條前綴描述
total總迭代次數(shù)(當(dāng)?shù)鏖L度未知時需手動指定)
unit迭代單位(如 ‘file’, ‘image’)
unit_scale自動縮放單位(如 KB/MB)
leave循環(huán)結(jié)束后是否保留進(jìn)度條(默認(rèn) True)
ncols進(jìn)度條寬度(字符數(shù))
colour進(jìn)度條顏色(如 ‘green’, ‘#ff0000’)

示例:帶描述和自定義單位

from tqdm import tqdm
import time

for i in tqdm(range(50), desc="Processing", unit="item", colour="green"):
    time.sleep(0.05)

輸出效果:

Processing: 100%|██████████| 50/50 [00:02<00:00, 20.12item/s]

四、處理嵌套循環(huán)

tqdm 支持多層嵌套進(jìn)度條,只需分別包裹每一層:

from tqdm import tqdm
import time

for i in tqdm(range(3), desc="Outer"):
    for j in tqdm(range(100), desc="Inner", leave=False):
        time.sleep(0.01)
Outer:   0%|          | 0/3 [00:00<?, ?it/s]
Inner:   0%|          | 0/100 [00:00<?, ?it/s]
Inner:  10%|█         | 10/100 [00:00<00:00, 94.52it/s]
Inner:  20%|██        | 20/100 [00:00<00:00, 94.96it/s]
Inner:  30%|███       | 30/100 [00:00<00:00, 94.97it/s]
Inner:  40%|████      | 40/100 [00:00<00:00, 94.88it/s]
Inner:  50%|█████     | 50/100 [00:00<00:00, 94.48it/s]
Inner:  60%|██████    | 60/100 [00:00<00:00, 94.40it/s]
Inner:  70%|███████   | 70/100 [00:00<00:00, 93.65it/s]
Inner:  80%|████████  | 80/100 [00:00<00:00, 94.03it/s]
Inner:  90%|█████████ | 90/100 [00:00<00:00, 93.76it/s]
Inner: 100%|██████████| 100/100 [00:01<00:00, 93.81it/s]
Outer:  33%|███▎      | 1/3 [00:01<00:02,  1.06s/it]
Inner:   0%|          | 0/100 [00:00<?, ?it/s]
Inner:  10%|█         | 10/100 [00:00<00:00, 92.40it/s]
Inner:  20%|██        | 20/100 [00:00<00:00, 92.28it/s]
Inner:  30%|███       | 30/100 [00:00<00:00, 92.16it/s]
Inner:  40%|████      | 40/100 [00:00<00:00, 92.55it/s]
Inner:  50%|█████     | 50/100 [00:00<00:00, 92.10it/s]
Inner:  60%|██████    | 60/100 [00:00<00:00, 92.32it/s]
Inner:  70%|███████   | 70/100 [00:00<00:00, 93.00it/s]
Inner:  80%|████████  | 80/100 [00:00<00:00, 93.31it/s]
Inner:  90%|█████████ | 90/100 [00:00<00:00, 93.02it/s]
Inner: 100%|██████████| 100/100 [00:01<00:00, 93.08it/s]
Outer:  67%|██████▋   | 2/3 [00:02<00:01,  1.07s/it]
Inner:   0%|          | 0/100 [00:00<?, ?it/s]
Inner:  10%|█         | 10/100 [00:00<00:00, 91.33it/s]
Inner:  20%|██        | 20/100 [00:00<00:00, 91.54it/s]
Inner:  30%|███       | 30/100 [00:00<00:00, 92.87it/s]
Inner:  40%|████      | 40/100 [00:00<00:00, 92.91it/s]
Inner:  50%|█████     | 50/100 [00:00<00:00, 93.23it/s]
Inner:  60%|██████    | 60/100 [00:00<00:00, 92.99it/s]
Inner:  70%|███████   | 70/100 [00:00<00:00, 92.75it/s]
Inner:  80%|████████  | 80/100 [00:00<00:00, 93.23it/s]
Inner:  90%|█████████ | 90/100 [00:00<00:00, 92.88it/s]
Inner: 100%|██████████| 100/100 [00:01<00:00, 93.16it/s]
Outer: 100%|██████████| 3/3 [00:03<00:00,  1.07s/it]

注意:內(nèi)層循環(huán)通常設(shè)置 leave=False,避免屏幕被大量歷史進(jìn)度條刷屏。

五、手動控制進(jìn)度

有時你無法使用 for 循環(huán)(比如在 while 中),這時可以使用 tqdm 的手動更新方式:

from tqdm import tqdm
import time

pbar = tqdm(total=100, desc="Manual")
current = 0
while current < 100:
    time.sleep(0.02)
    increment = min(10, 100 - current)
    pbar.update(increment)
    current += increment
pbar.close()
Manual: 100%|██████████| 100/100 [00:00<00:00, 488.25it/s]

關(guān)鍵方法:

  • pbar.update(n):前進(jìn) n 步
  • pbar.close():關(guān)閉進(jìn)度條(釋放資源)

六、與 pandas 集成

tqdm 還能與 pandas 無縫集成,用于顯示 apply()、groupby() 等操作的進(jìn)度:

import pandas as pd
from tqdm import tqdm

# 啟用 pandas 支持
tqdm.pandas(desc="Pandas Apply")

df = pd.DataFrame({'x': range(1000)})
df['x_squared'] = df['x'].progress_apply(lambda x: x ** 2)
Pandas Apply: 100%|██████████| 1000/1000 [00:00<00:00, 602803.10it/s]

七、Jupyter Notebook 中的特殊支持

在 Jupyter 中,推薦使用 tqdm.notebook.tqdm,它會渲染出更美觀的 HTML 進(jìn)度條:

from tqdm.notebook import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(0.01)

效果是帶有顏色和動態(tài)更新的圖形化進(jìn)度條,體驗更佳。

八、性能影響

tqdm 的設(shè)計非常高效,默認(rèn)每秒最多刷新 10 次(可通過 minitersmininterval 調(diào)整),對程序性能影響微乎其微。即使在高頻循環(huán)中,也可以放心使用。

九、小貼士

  • 如果你在服務(wù)器或無終端環(huán)境中運(yùn)行(如某些 CI/CD 環(huán)境),tqdm 會自動檢測并禁用進(jìn)度條,避免輸出混亂。
  • 可通過 disable=True 強(qiáng)制關(guān)閉進(jìn)度條(便于調(diào)試或日志記錄)。
  • 使用 logging 時,建議將 tqdm 輸出重定向到 sys.stderr(默認(rèn)行為),避免干擾日志流。

結(jié)語

tqdm 是 Python 開發(fā)者提升用戶體驗和調(diào)試效率的利器。無論是訓(xùn)練深度學(xué)習(xí)模型、處理大規(guī)模數(shù)據(jù),還是簡單的腳本任務(wù),只需一行代碼,就能讓你的程序“看得見進(jìn)度”。

記住:好的工具不在于復(fù)雜,而在于恰到好處的優(yōu)雅。

趕快在你的下一個項目中試試 tqdm 吧!

以上就是Python進(jìn)度條神器tqdm的使用指南的詳細(xì)內(nèi)容,更多關(guān)于Python進(jìn)度條神器tqdm的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

嵊泗县| 屏南县| 裕民县| 旺苍县| 苍梧县| 蓬莱市| 安多县| 通州市| 临清市| 朔州市| 万盛区| 法库县| 邢台县| 嵊州市| 莲花县| 嵊泗县| 吉安市| 新建县| 左权县| 宜兰市| 隆尧县| 林周县| 化州市| 汉寿县| 湖口县| 花莲市| 中山市| 蒙自县| 永德县| 临海市| 靖远县| 普兰县| 张家口市| 株洲县| 土默特左旗| 桦南县| 隆林| 久治县| 龙州县| 武乡县| 射阳县|