[英]How can I format tqdm progress bar to show progress per minute instead of per second?
我们可以通过添加自定义为此bar_format
参数的自定义实例tqdm
使用说明 手册中得到部分描述:
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/rate),除以 60,然后将其格式化为 2 个小数位。 然后,我们更新d
与新的统计-我们甚至可以使用字符串连接添加一些格式。 请注意,在任何迭代完成之前, {rate}
是None
,这意味着除非您执行if d["rate"]
检查,否则这将产生错误。
完成后,如果您使用tqdm
的自定义实例,我们可以在bar_format
参数字符串中使用此统计信息bar_format
参数中列出的参数:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.