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

已知进程预估时长,如何配置TQDM进度条?

使用TQDM为已知预估耗时的进程添加进度条

当你已知进程的预估总时长但没有可迭代对象时,可以通过手动基于时间更新进度的方式用TQDM实现进度条,下面是两种实用方案:

方案一:实时基于流逝时间更新进度

这种方式最贴合实际耗时,进度条会随时间流逝同步更新,适合进程耗时波动不大的场景:

import time
from tqdm import tqdm

# 经验模型给出的预估总耗时(单位:秒)
estimated_total_time = 30

# 初始化进度条,total设为预估总时长
pbar = tqdm(total=estimated_total_time, desc="进程运行中")

start_time = time.time()
# 替换成你的实际进程逻辑循环
while True:
    # 计算已经过去的时间
    elapsed_time = time.time() - start_time
    # 计算进度条需要更新的差值(避免重复更新)
    update_amount = elapsed_time - pbar.n
    if update_amount > 0:
        pbar.update(update_amount)
    
    # 模拟进程执行(替换成你的实际代码)
    time.sleep(0.1)
    
    # 进程结束判断:要么实际完成,要么达到预估时长
    process_done = False  # 这里换成你真实的结束条件
    if process_done or elapsed_time >= estimated_total_time:
        break

# 确保进度条最终拉满并关闭
pbar.update(estimated_total_time - pbar.n)
pbar.close()

方案二:按固定时间步长模拟进度

如果你的进程耗时非常稳定,可以把总时长拆分成若干固定小步,用循环驱动进度条:

import time
from tqdm import tqdm

estimated_total_time = 30
step_interval = 0.1  # 每步的时间间隔(单位:秒)
total_steps = int(estimated_total_time / step_interval)

# 用固定步数循环驱动进度条
for _ in tqdm(range(total_steps), desc="进程运行中"):
    # 执行你的进程逻辑片段,或者等待步长时间
    time.sleep(step_interval)
    
    # 如果进程提前完成,直接中断循环
    if False:  # 替换成真实的结束条件
        break

额外提示

  • 如果进程提前完成,直接调用pbar.update(estimated_total_time - pbar.n)就能把进度条拉满,不用等预估时间到
  • 如果中途发现预估时长不准,还可以通过pbar.total = new_estimated_time动态调整进度条的总长度(需TQDM版本支持)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:17:20