python tqdm模块制作个性化进度条
tqdm
模块默认的进度条里会有不让人喜欢的剩余时间与速度显示
看tqdm
模块的源代码,可以看到,关于构造函数的参数说明,其中有一个bar_format
参数定义了进度框的形状
def __init__(self, iterable=None, desc=None, total=None, leave=True, file=None,
ncols=None, mininterval=0.1, maxinterval=10.0, miniters=None,
ascii=None, disable=False, unit='it', unit_scale=False,
dynamic_ncols=False, smoothing=0.3, bar_format=None, initial=0,
position=None, postfix=None, unit_divisor=1000, write_bytes=None,
lock_args=None, nrows=None, colour=None, delay=0, gui=False,
**kwargs):
"""
Parameters
----------
bar_format : str, optional
Specify a custom bar string formatting. May impact performance.
[default: '{l_bar}{bar}{r_bar}'], where
l_bar='{desc}: {percentage:3.0f}%|' and
r_bar='| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, '
'{rate_fmt}{postfix}]'
Possible vars: l_bar, bar, r_bar, n, n_fmt, total, total_fmt,
percentage, elapsed, elapsed_s, ncols, nrows, desc, unit,
rate, rate_fmt, rate_noinv, rate_noinv_fmt,
rate_inv, rate_inv_fmt, postfix, unit_divisor,
remaining, remaining_s, eta.
Note that a trailing ": " is automatically removed after {desc}
if the latter is empty.
bar_format
默认的参数为{l_bar}{bar}{r_bar}
,其中{r_bar}
就是进度条后面的描述信息因此,为了不显示时间与速度,只需要更改bar_format
参数,就能得到个性化的进度条。
bar_format = '{l_bar}{bar}| [{n_fmt}/{total_fmt}{postfix}]'
下面是示例代码
from tqdm import tqdm
from time import sleep
with tqdm(total=100,desc=f'Epoch {1}/{100}',postfix=dict,mininterval=0.3, bar_format = '{l_bar}{bar}| [{n_fmt}/{total_fmt}{postfix}]') as pbar:
for i in range(100):
pbar.set_postfix(**{'loss': 0.1, 'lr': 0.01})
pbar.update(1)
if i == 50:
pbar.set_description(f'Epoch {2}/{100}')
sleep(0.1)
pbar.close()
直接使用for
可以直接使用for循环
from tqdm import tqdm
from time import sleep
a = [1,2,3]
pbar = tqdm(a, desc=f'Epoch {1}/{100}', postfix=dict)
for i in pbar:
pbar.set_postfix(**{'loss': i})
sleep(0.1)
多进度条
import time
from tqdm import tqdm
for j in range(5):
bar = tqdm(total=100, desc=f"dec {j}")
for i in range(100):
time.sleep(0.03)
bar.update(1)
bar.close()