gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:12:45 27 4
gpt4 key购买 nike

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

具体来说,tqdm 显示类似 1283.31s/it 的内容。但如果每次迭代需要几分钟或几小时,显示类似 21m/it 的内容会更有帮助。 .

最佳答案

我们可以通过添加自定义 bar_format 来做到这一点。 tqdm 的自定义实例的参数使用说明 partially described in the manual :

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 位小数。然后,我们更新 d使用新的 stat – 我们甚至可以使用字符串连接来添加一些格式。请注意,在任何迭代完成之前, {rate}None ,这意味着除非您执行 if d["rate"] 否则这将产生错误查看。
完成后,我们可以在 bar_format 中使用此统计信息参数字符串与 Parameters 中列出的字符串一起使用如果您使用 tqdm 的自定义实例:
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)
enter image description here

关于python - 如何格式化 tqdm 进度条以显示每分钟而不是每秒的进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59107897/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com