发布于 2020-08-26 03:22:21
我们可以通过使用指令partially described in the manual向tqdm的自定义实例添加一个自定义bar_format参数来实现这一点
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中列出的参数字符串一起使用此统计信息
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)

https://stackoverflow.com/questions/59107897
复制相似问题