1 简介

tqdm是Python中专门用于进度条美化的模块,通过在非while的循环体内嵌入tqdm,可以得到一个能更好展现程序运行过程的提示进度条,本文就将针对tqdm的基本用法进行介绍。

2 基本用法

tqdm:
tqdm中的tqdm()是实现进度条美化的基本方法,在for循环体中用tqdm()包裹指定的迭代器或range()即可,下面是两个简单的例子:

基础迭代

示例

  1. from tqdm import tqdm
  2. from time import sleep
  3. text = ""
  4. for char in tqdm(["a", "b", "c", "d"]):
  5. sleep(0.25)
  6. text = text + char

image.png

示例

trange:
作为tqdm(range())的简洁替代,如下例:

  1. from tqdm import trange
  2. for i in trange(100):
  3. sleep(0.01)

image.png

手动调整

使用with语句手动控制tqdm()更新:

  1. with tqdm(total=100) as pbar:
  2. for i in range(10):
  3. sleep(0.1)
  4. pbar.update(10)

image.png

示例

  1. data_loader = tqdm(data_loader)
  2. for step, data in enumerate(data_loader):
  3. images, labels = data
  4. pred = model(images.to(device))
  5. loss = loss_function(pred, labels.to(device))
  6. loss.backward()
  7. mean_loss = (mean_loss * step + loss.detach()) / (step + 1) # update mean losses
  8. data_loader.desc = "[epoch {}] mean loss {}".format(epoch, round(mean_loss.item(), 3))

image.png

3 控制换行数量

tqdm(validate_loader,ncols=8000)

模块中使用

也许tqdm最奇妙的用法是在脚本中或在命令行中。简单地在管道之间插入tqdm(或python -m tqdm)将通过所有stdin到stdout,同时将progress打印到stderr。
下面的示例演示了计算当前目录中所有Python文件的行数,其中包括计时信息。
image.png
注意,也可以指定tqdm的常用参数。
image.png
其他更多请见参考文献

参考文献

  1. 官网https://pypi.org/project/tqdm/