在编写长时间运行的代码时,我们常常会使用进度条来实时显示任务的进度。Python提供了许多实现进度条的库,其中tqdm
是一个高度可定制的库,它可以让你的代码进度条更加丰富有趣。
一、简介
tqdm
是一个Python的进度条库,它可以在循环迭代时实时显示任务的进度,支持多种方式的进度条样式,可以自定义进度条的位置、颜色、速度等。安装tqdm
库十分简单,只需在终端输入以下命令:
pip install tqdm
安装完成后,我们可以直接在代码中使用它,来创建漂亮的进度条。
二、基础使用
让我们首先看一下最简单的使用方式。下面的代码演示了tqdm
在循环中的基本用法:
# 导入tqdm模块
from tqdm import tqdm
# 执行循环
for i in tqdm(range(1000)):
# 这里是循环的操作
以上代码使用了tqdm
工具实现了一个简单的进度条。通过tqdm
函数,我们将range(1000)
传递进去,然后在for
循环中使用tqdm
遍历range(1000)
中的元素。tqdm
将自动显示进度条,并实时更新进度。我们还可以仅仅使用tqdm
函数,如下所示:
# 导入tqdm模块
from tqdm import tqdm
# 执行循环
for i in tqdm(range(1000)):
# 这里是循环的操作
此时会使用默认样式显示进度条,如下所示:
5%|███▏ | 50/1000 [00:00<00:01, 489.96it/s]
默认样式比较简单,只有一个进度条,但我们可以使用一些其他的样式来更好地展示进度条,后面会提到。
三、自定义样式
tqdm
是一个高度可定制的库,你可以使用各种可用参数来定制进度条。下面介绍一些可用的参数:
total
:表示迭代次数。position
:进度条的位置。desc
:进度条的描述信息。unit
:进度条每个单位的描述信息。bar_format
:进度条的样式,可以自定义。 下面的代码演示了如何使用以上参数进行自定义:
# 导入tqdm模块
from tqdm import tqdm
# 使用自定义样式
with tqdm(total=100, position=0, desc='Downloading', unit='file') as pb:
for i in range(100):
pb.update(1)
以上代码定义了进度条总共需要迭代100次,进度条显示在第一行,进度条的描述为'Downloading'
,每个单位为'file'
。而pb.update(1)
则表示迭代次数加1。这段代码的效果如下:
Downloading: 100%|█████████████████████████████████████████████████████████████████████| 100/100 [00:00<00:00, 4811.35it/s]
可以看到,我们自定义的样式不仅包含了进度条,还有进度条当前的百分比,已处理的文件数、总文件数、处理速度等信息。所有这些信息都可以在bar_format
这个参数中进行自定义。
四、更多自定义样式
tqdm
提供了许多内置的进度条样式,我们可以从中选择适合自己项目的样式。下面是一些常见的样式:
'bar'
: 进度条样式,如[=== ]
'barh'
: 水平样式,如[= ]
'progress'
: 进度和百分比'percentage'
: 进度百分比'count'
: 进度条计数'n'
: 显示n的当前值 在我们的代码中,可以设置如下参数进行自定义样式:
# 导入tqdm模块
from tqdm import tqdm
# 使用进度计数样式
with tqdm(range(1000), desc='Processing', unit='document', bar_format='{l_bar}{bar:20}{r_bar}{bar:-20b}') as pb:
for i in pb:
# 这里是循环的操作
pb.update(1)
以上代码使用了默认的样式,但是在此基础上设置了进度条的左边缘、进度条、右边缘和进度条两端之间的长度分别为1、20、1、20。效果如下:
Processing: 100%|████████████████████████████████████████████████████████████████| 1000/1000 [00:00<00:00, 44730.08document/s]
除了基本样式之外,我们还可以使用tqdm
提供的更丰富的样式,如下所示:
# 导入tqdm模块
from tqdm import tqdm
# 使用设置颜色样式
with tqdm(range(100), bar_format='\x1b[32m{bar}\x1b[0m') as pb:
for i in pb:
# 这里是循环的操作
pb.set_postfix({'process': i})
以上代码使用了绿色的进度条样式,并且在进度条右边显示了当前进度。效果如下:
35%|██████████████████████████▋ | 35/100 [00:00<00:00, 343.92it/s, process=35]
可以看到,我们的进度条不仅可以改变颜色,还可以显示进度条右边的其他信息。
五、总结
使用Python tqdm
库可以让你的代码进度条更加丰富多彩,许多内置的样式可以让我们自定义不同的进度条样式。通过tqdm
,我们能够更好地把握任务进度,让编写代码更加愉快。
如果想要学习更多关于tqdm
的使用,可以参考它的官方文档: https://github.com/tqdm/tqdm。