[英]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.