ped*_*jjj 7 python python-3.x progress-bar tqdm
我在GitHub或文档中找不到这个,但我想知道是否有一种集成的方式(首选)或解决方法来显示一次迭代所需的平均时间(以分钟而不是秒为单位)。
具体来说, tqdm 显示类似1283.31s/it但如果每次迭代需要几分钟或几个小时,显示类似21m/it.
我们可以通过使用手册中部分描述的说明将自定义bar_format参数添加到自定义实例来做到这一点:tqdm
class TqdmExtraFormat(tqdm):\n """Provides a `minutes per iteration` format parameter"""\n @property\n def format_dict(self):\n d = super(TqdmExtraFormat, self).format_dict\n rate_min = \'{:.2f}\'.format(1/d["rate"] / 60) if d["rate"] else \'?\'\n d.update(rate_min=(rate_min + \' min/\' + d[\'unit\']))\n return d\nRun Code Online (Sandbox Code Playgroud)\n我们在这里所做的是format_dict使用自定义版本进行覆盖,该版本添加了可在bar_format参数中使用的新统计数据。d是现有的format_dict,因此我们可以使用它来获取 的值{rate},将其转换为每次迭代的时间(1/速率),除以 60,然后将其格式化为小数点后两位。然后,我们d使用新的 stat \xe2\x80\x93\xc2\xa0 进行更新,我们甚至可以使用字符串连接来添加一些格式。请注意,在任何迭代完成之前,{rate}is None,这意味着除非您进行检查,否则这将给出错误if d["rate"]。
完成此操作后,如果您使用自定义实例,我们可以在参数字符串中使用此统计数据以及参数bar_format中列出的统计数据:tqdm
b=\'{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_min}{postfix}]\'\nfor i in TqdmExtraFormat(range(2), unit_scale = 60, bar_format=b):\n time.sleep(6)\nRun Code Online (Sandbox Code Playgroud)\n\n