1 简介
tqdm是Python中专门用于进度条美化的模块,通过在非while的循环体内嵌入tqdm,可以得到一个能更好展现程序运行过程的提示进度条,本文就将针对tqdm的基本用法进行介绍。
2 基本用法
tqdm:
tqdm中的tqdm()是实现进度条美化的基本方法,在for循环体中用tqdm()包裹指定的迭代器或range()即可,下面是两个简单的例子:
基础迭代
示例
from tqdm import tqdm
from time import sleep
text = ""
for char in tqdm(["a", "b", "c", "d"]):
sleep(0.25)
text = text + char
示例
trange:
作为tqdm(range())的简洁替代,如下例:
from tqdm import trange
for i in trange(100):
sleep(0.01)
手动调整
使用with语句手动控制tqdm()更新:
with tqdm(total=100) as pbar:
for i in range(10):
sleep(0.1)
pbar.update(10)
示例
data_loader = tqdm(data_loader)
for step, data in enumerate(data_loader):
images, labels = data
pred = model(images.to(device))
loss = loss_function(pred, labels.to(device))
loss.backward()
mean_loss = (mean_loss * step + loss.detach()) / (step + 1) # update mean losses
data_loader.desc = "[epoch {}] mean loss {}".format(epoch, round(mean_loss.item(), 3))
3 控制换行数量
tqdm(validate_loader,ncols=8000)
模块中使用
也许tqdm最奇妙的用法是在脚本中或在命令行中。简单地在管道之间插入tqdm(或python -m tqdm)将通过所有stdin到stdout,同时将progress打印到stderr。
下面的示例演示了计算当前目录中所有Python文件的行数,其中包括计时信息。
注意,也可以指定tqdm的常用参数。
其他更多请见参考文献