You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用tqdm监控代码运行完成进度并显示百分比进度条

Python tqdm 实现长NLP任务百分比进度条方案

首先安装依赖:
pip install tqdm


基础用法:直接包裹可迭代对象

如果你的逻辑是逐样本/逐批次处理数据集、遍历固定长度的任务列表,直接把可迭代对象传给tqdm()即可,工具会自动计算完成百分比、已运行时长、预计剩余时长、实时处理速度,和软件安装的进度条效果完全一致。

NLP批量文本处理示例:

from tqdm import tqdm
import time

# 模拟需要处理的NLP数据集
text_dataset = [f"news_sample_{i}" for i in range(10000)]
processed_res = []

# tqdm直接包裹遍历对象即可
for item in tqdm(text_dataset, desc="文本预处理进度"):
    # 替换为你实际的业务逻辑:分词、向量化、模型推理等
    time.sleep(0.0003)  # 模拟单条文本处理耗时
    processed_res.append(item)

运行时终端会实时刷新如下样式的进度:
文本预处理进度: 45%|████▌ | 4500/10000 [00:01<00:01, 2997.56it/s]
字段依次对应:自定义进度说明、完成百分比、可视化进度条、已完成量/总任务量、已耗时、预计剩余时间、每秒处理速度。


长任务适配:手动控制进度更新

如果你的任务是分多个独立阶段执行(比如先加载大模型、再跑批量推理、最后做结果导出,总耗时可达1小时,没法全部塞进同一个遍历循环),可以手动控制进度条的更新步长,精准匹配实际任务进度:

from tqdm import tqdm
import time

# 初始化进度条,总长度设为100,直接对应百分比展示
pbar = tqdm(total=100, desc="NLP任务总进度")

# 阶段1:加载预训练模型,占总进度20%
time.sleep(12*60)  # 模拟模型加载耗时12分钟
pbar.update(20)  # 进度推进到20%

# 阶段2:批量推理,占总进度70%
for batch in tqdm(range(70), desc="批次推理进度"):
    time.sleep(0.6*60)  # 模拟单批次处理耗时36秒,70个批次合计42分钟
    pbar.update(1)  # 每完成1个批次,总进度推进1%

# 阶段3:结果评估与导出,占总进度10%
time.sleep(6*60)  # 模拟结果导出耗时6分钟
pbar.update(10)

# 任务结束关闭进度条
pbar.close()

1小时长任务实用调参

针对长时间运行的任务,几个常用参数可以避免进度条显示异常、提升可读性:

  • position=0:多进度条嵌套、循环内有print输出时,不会出现进度条乱跳、刷屏重复行的问题
  • unit:自定义进度单位,比如处理文本设unit="条",模型训练设unit="batch",展示更直观
  • ncols=120:固定进度条整体宽度,避免终端窗口大小变化导致进度条错位
  • 如果你在Jupyter Notebook环境运行,把导入语句替换为from tqdm.notebook import tqdm,会生成适配网页端的交互式进度条,不会在输出区刷出大量冗余行

带参数的调用示例:

for item in tqdm(text_dataset, desc="命名实体识别进度", unit="条", ncols=120, position=0):
    # 实际处理逻辑
    pass

注意:如果循环内有逻辑会跳过部分任务,要按实际完成的任务量调用update(),不要硬套固定步长,否则会出现百分比和实际进度不符的问题。

内容的提问来源于stack exchange,提问作者KB-kodax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:09:17