tqdm:python的简单可视化进度
说明
本篇文章的主要目的是快速上手使用,而不是解析源码。
目录结构
文章目录
- tqdm:python的简单可视化进度
- 1. 应用场景
- 2. 库安装
- 3. 方法速览
- 4. 案例
- 5. 总结
1. 应用场景
进度条应用的场景很多,不过我最近一直在研究CV方向的内容,因此进度条主要还是用在可视化显示网络训练的流程。
2. 库安装
tqdm是python的一个第三方库,可以快速简单的实现进度条的可视化显示。
安装方法很简单,Windows在cmd命令行窗口运行下面的命令即可:
pip install tqdm
3. 方法速览
tqdm对象创建
这里我们主要使用到的方法是与库同名的方法,即tqdm
。
from tqdm import tqdm
该方法的作用是创建一个“进度条对象”,其需要传入一个参数,通常来说这个参数为一个可迭代对象。比如:
# 1. range函数
bar = tqdm(range(10))
# 2. 列表
bar = tqdm(['a',1,2,3,4])
# 3. 字典
bar = tqdm({'k':1,'b':2}) # 不过迭代访问时访问的是key
# 4. torch里面的数据加载器(这也是我需要的)
train_bar = tqdm(train_loader)
当创建了tqdm对象后,我们迭代时不再使用刚刚的可迭代对象,而是直接使用tqdm对象即可,如下所示:
# 导包
from tqdm import tqdm
# 1. 创建进度条对象
bar = tqdm(range(10))
# 2. 迭代访问
for i in bar:
print(i)
上述代码的运行结果为:
tqdm重要方法
该对象具有一个很重要的方法,即tqdm.desc
,该方法可以实现自定义显示进度条的内容。
上面演示的代码,只是显示了进度条,如果我们想要进度条的内容格式为:你好,这是我的进度条{}/{}
,其中两个中括号的内容分别为当前索引和总的数目。
那么可以这么修改代码:
# 导包
from tqdm import tqdm
import time
# 1. 创建进度条对象
bar = tqdm(range(10))
# 2. 显示
for e in bar:
bar.desc = '你好,这是我的进度条 {}/{}'.format(e+1, 10)
运行结果如下:
值得再次提醒的是:迭代的对象一定要用tqdm对象,不然没有效果。
注意点
上面代码由于很短,因此会在非常短的时间内运行完毕,导致我们看不见进度条的变换,此时可以用time.sleep(0.5)
方法来增加延时。
4. 案例
下面给大家一个完整的演示代码:
# 导包
from tqdm import tqdm
import time
# 1. 创建进度条对象
bar = tqdm(range(10))
# 3. 访问
for e in bar:
bar.desc = 'hello,test {}/{}'.format(e+1, 10)
time.sleep(0.5)
结果如下gif图像所示:(我使用调试的方式录的屏)
5. 总结
其实进度条的显示库还有很多,并且有很多库实现的进度条非常炫酷,大家可以去自己尝试尝试。
不过通常来讲,写脚本,tqdm这样简单的进度条就够我们使用了。