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

如何为tqdm各迭代添加时长权重提示以优化ETA准确性?

为tqdm任务添加耗时权重优化ETA计算

当然可以通过自定义进度权重来优化tqdm的ETA计算,核心思路是给每个任务分配对应的相对耗时权重,让tqdm按照总权重而非任务数量来计算进度和预计完成时间。

解决方法

  1. 为每个任务定义对应的相对权重(比如你示例里的1、5、10)
  2. 初始化tqdm时,将total参数设为权重总和
  3. 执行每个任务后,手动调用update()方法传入当前任务的权重,让进度条按权重推进

修正后的完整代码

from tqdm import tqdm

def create_task(n):
    def fib(x):
        if x == 1 or x == 0:
            return 1
        return fib(x - 1) + fib(x - 2)
    return lambda: fib(n)

n = 1
tasks = [create_task(n), create_task(5*n), create_task(10*n)]
# 对应每个任务的相对耗时权重,和任务列表一一对应
weights = [1, 5, 10]
total_weight = sum(weights)

# 初始化进度条,总进度设为权重总和
with tqdm(total=total_weight) as pbar:
    for task, weight in zip(tasks, weights):
        task()  # 注意:原代码的task.run()错误,lambda函数直接调用即可
        pbar.update(weight)  # 按当前任务的权重更新进度

原理说明

tqdm默认每个迭代贡献1个进度单位,现在我们让每个任务根据其耗时权重贡献对应数量的进度单位。比如总权重是16,第一个任务完成后进度推进1/16,第二个推进5/16,第三个推进10/16。这样tqdm会基于已完成的权重占比和实际耗时,计算出更贴合真实情况的ETA,避免因任务耗时差异大导致的预估偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:32:47