首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何格式化tqdm进度条以显示每分钟而不是每秒的进度?

如何格式化tqdm进度条以显示每分钟而不是每秒的进度?
EN

Stack Overflow用户
提问于 2019-11-29 23:56:10
回答 1查看 897关注 0票数 7

我在GitHubdocs上找不到这一点,但我想知道是否有一种集成的方式(首选)或解决方法来显示一次迭代所需的平均时间,单位是分钟而不是几秒钟。

具体地说,tqdm显示了类似1283.31s/it的内容,但如果每次迭代需要几分钟或几个小时,那么显示像21m/it这样的内容会更有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-26 03:22:21

我们可以通过使用指令partially described in the manualtqdm的自定义实例添加一个自定义bar_format参数来实现这一点

代码语言:javascript
复制
class TqdmExtraFormat(tqdm):
    """Provides a `minutes per iteration` format parameter"""
    @property
    def format_dict(self):
        d = super(TqdmExtraFormat, self).format_dict
        rate_min = '{:.2f}'.format(1/d["rate"] / 60) if d["rate"] else '?'
        d.update(rate_min=(rate_min + ' min/' + d['unit']))
        return d

我们在这里做的是用一个自定义版本覆盖format_dict,该版本添加了一个可以在bar_format参数中使用的新状态。d是现有的format_dict,因此我们可以使用它来获取{rate}的值,将其转换为每次迭代的时间(1/速率),除以 60,然后将其格式化为小数点后 2 位。

然后,我们使用新的stat更新d。- we甚至可以使用字符串连接来添加一些格式。请注意,在完成任何迭代之前,{rate}None,这意味着除非您执行if d["rate"]检查,否则这将给出一个错误。

完成此操作后,如果您使用自定义的tqdm实例,则可以在bar_format参数字符串中与Parameters中列出的参数字符串一起使用此统计信息

代码语言:javascript
复制
b='{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_min}{postfix}]'
for i in TqdmExtraFormat(range(2), unit_scale = 60, bar_format=b):
    time.sleep(6)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59107897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档