簡體   English   中英

如何格式化 tqdm 進度條以顯示每分鍾而不是每秒的進度?

[英]How can I format tqdm progress bar to show progress per minute instead of per second?

我在GitHub文檔中找不到這個,但我想知道是否有一種集成的方式(首選)或解決方法來顯示一次迭代所需的平均時間(以分鍾而不是秒為單位)。

具體來說, tqdm 顯示類似1283.31s/it但如果每次迭代需要幾分鍾或幾小時,顯示類似21m/it內容會更有幫助。

我們可以通過添加自定義為此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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM