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

如何修改tqdm中百分比字段的精度?大迭代场景适配

解决tqdm自定义进度条百分比不更新的问题

你对tqdm文档的理解偏差主要有三点:

  • 混淆外部变量与tqdm内置变量:你手动定义的percentage变量无法替换bar_format中的{percentage}占位符。bar_format里的所有变量都是tqdm实例内部维护的(比如当前完成数n、总次数total、自动计算的百分比等),外部变量不会被tqdm识别,所以你手动计算的百分比根本没生效,tqdm始终用默认取整后的百分比值。
  • 忽略tqdm的更新频率优化:tqdm默认会根据总迭代次数自动调整更新频率,避免频繁刷屏。当总次数极大时,单次迭代的百分比变化极小(你的例子里每次仅增加约0.00063%),tqdm会合并多次迭代的更新,导致百分比长时间停留在0%,直到累积到1%才刷新。
  • 未明确指定迭代总数:你的循环是range(2, total),实际迭代次数为total-2,虽然tqdm能自动识别range的长度,但如果是Excel行这类无法自动提供总数的可迭代对象,会导致百分比计算错误。

修正后的代码

from tqdm import tqdm
import time

total = 157834
# 直接对tqdm内置的percentage变量设置小数格式,保留默认进度条样式
bar_format = '{desc}: {percentage:.3f}%|{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}{postfix}]'

# 明确指定total,设置mininterval强制高频更新
for row in tqdm(range(2, total), total=total-2, ncols=100, bar_format=bar_format, mininterval=0.1):
    time.sleep(0.1)

关键调整说明:

  1. 直接在bar_format中用{percentage:.3f}%指定小数位,复用tqdm内置的百分比计算逻辑,无需手动计算。
  2. 设置mininterval=0.1,强制tqdm每隔0.1秒更新一次进度条,确保小数位的变化能及时显示。
  3. 手动指定total参数,确保tqdm能准确计算百分比(针对非range类可迭代对象尤为重要)。

内容的提问来源于stack exchange,提问作者Rocketman Dan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:25:32