python模块------tqdm
tqdm可以让你的程序显示一个智能进度表,它可以包装任何可迭代的内容。除了低开销的特点之外,tqdm
还使用智能算法来预测剩余时间并跳过不必要的迭代显示,它的开销在大多数情况下可以忽略不计。
用法
如下所示:
from tqdm import tqdm
for i in tqdm(range(10000)):
pass
for i in trange(10):
pass
效果:
trange()
是tqdm(range(i))
的一个特殊优化实例
tqdm对象
装饰一个可迭代对象,返回一个迭代器,它的行为与原始可迭代对象完全相同,但每次请求值时都会打印一个动态更新的进度条。
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=False,
lock_args=None, nrows=None, colour=None, delay=0, gui=False,
**kwargs):
常用参数说明:
iterable=None: 一个可迭代对象
desc=None: str类型,进度条的前缀
total=None: int or float, 预期的迭代次数。如果未指定,如果可能,使用 len(iterable)
file=None: `io.TextIOWrapper` or `io.StringIO`, optional
Specifies where to output the progress messages
(default: sys.stderr). Uses `file.write(str)` and `file.flush()`
methods. For encoding, see `write_bytes`.
ncols=None: int, optional
整个输出消息的宽度。
mininterval=0.1: float, optional
最小进度显示更新间隔 [默认值:0.1] 秒。
maxinterval : float, optional
最大进度显示更新间隔 [默认:10] 秒。
disable : bool, optional
是否禁用整个进度条包装器
应用
神经网络训练进度显示:
with tqdm(initial=self.step, total=self.train_num_steps, disable=not accelerator.is_main_process) as pbar:
...
# 设置
pbar.set_description(f'loss: {
total_loss:.4f}')
# 手动更新进度
pbar.update(1)
效果: