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

如何在辅助函数中创建并更新tqdm进度条?

问题解决方案

问题1:进度条卡住&看似无限循环的修复

你的代码并非真的无限循环,只是总执行时间过长(10次主循环×100次辅助循环×1秒休眠=1000秒),导致看起来像卡住。而进度条不更新是因为每次update的步长太小(1/1000/100=0.00001),tqdm默认会忽略极小的进度更新以提升性能。

修复方式:调整进度更新的步长,让每次更新的数值匹配总进度的单位。比如总任务量是10×100=1000,那么每次辅助循环里直接update(1)即可:

from tqdm import tqdm
import time

def helper_function(progress):
    for i in range(100):
        # 模拟工作
        time.sleep(0.01)  # 缩短休眠时间方便测试
        progress.update(1)

def main_function():
    # 总任务量是10次主循环×每次100个辅助任务=1000
    with tqdm(total=1000, desc="Main loop", unit="iter") as progress:
        for j in range(10):
            # 模拟主循环工作
            time.sleep(0.01)
            helper_function(progress)

main_function()

如果主循环的工作也需要计入进度,可以调整total为10 + 10×100=1010,并在主循环里添加progress.update(1)。

问题2:只保留百分比显示

通过tqdm的bar_format参数自定义显示格式,仅保留百分比:

with tqdm(total=1000, bar_format='{percentage:3.0f}%') as progress:
    # 后续代码不变

这个格式字符串会显示整数百分比(如50%),如果需要保留小数,可改为{percentage:.1f}%。

完整修正代码

from tqdm import tqdm
import time

def helper_function(progress):
    for i in range(100):
        time.sleep(0.01)
        progress.update(1)

def main_function():
    # 仅显示百分比,总任务量1000
    with tqdm(total=1000, bar_format='{percentage:3.0f}%') as progress:
        for j in range(10):
            time.sleep(0.01)
            helper_function(progress)

main_function()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:31:07