如何处理tqdm进度条剩余时间跳变?是否设置smoothing=0用全局平均计算?
问题解答
你需要的全局平均计算剩余时间的需求,直接设置smoothing=0即可实现。
关于smoothing参数的作用说明
smoothing参数并不仅仅作用于速度数值的展示,tqdm的预估剩余时间完全基于其计算得出的速度值推导,因此调整该参数会同步修改剩余时间的计算逻辑:
- 当设置
smoothing=0时,会完全关闭指数移动平均的平滑逻辑,速度计算直接取已完成总步数 / 已消耗总时间的全局平均值,剩余时间则通过「剩余步数 / 全局平均速度」计算得出,完全符合你期望的计算规则,不会受近期快慢步骤的影响出现大幅跳变。 - 默认值0.3会给近期执行的步骤速度赋予更高权重,优先参考瞬时速度计算剩余时间,这正是你遇到连续快/慢步骤时,剩余时间出现大幅跳变的核心原因。
如果你的单步耗时差异极大,也可以自定义进度条格式,同时展示全局平均速度和瞬时速度,给用户更全面的参考信息。
内容的提问来源于stack exchange,提问作者Alexander Pacha
相关产品推荐
相关产品推荐

