最近工作需要写一些耗时的 python 小脚本,普通黑窗(控制台)执行即可。但没有进度可不行呀。于是用一些常见的进度提示库- tqdm 。
今天我们会罗列几个关于 tqdm 常见自定义场景。并尝试对动态更新描述信息做简单的封装,积累一些通用模块。
pip 安装
pip install tqdm简单用法很简单:
控制台显示:
有人可能会觉得默认的外观太普通了。 tqdm 提供了丰富的自定义选项,可以让你根据不同的需求调整进度条的外观和行为,接下来看看他的自定义能力。
tqdm 函数参数:
desc :进度条的描述信息。total :总迭代次数(默认为 None ,会自动检测)。leave :是否在完成时保留进度条(默认为 True )。ncols :进度条的最大宽度(列数)。ascii :是否使用 ASCII 字符显示进度条(默认为 False )。bar_format :自定义进度条的格式字符串。colour :设置进度条的颜色。1. 基本自定义desc="Processing" :设置进度条的描述信息。ascii=False :不使用 ASCII 字符显示进度条。这个参数默认就是 False ,如果设置为 True,进度条就变成 #ncols=75 :设置进度条的最大宽度为 75 列。第一个是 ascii = False。第二个是 ascii = True2. 自定义进度条格式你可以通过 bar_format 参数来自定义进度条的格式。并且有一些信息只有 tqdm 才"知道"的信息,因此,它内置了一些占位符:
{l_bar} :左边的进度条部分。{bar} :进度条本身。{r_bar} :右边的信息部分。{n} :当前迭代次数。{total} :总迭代次数。{percentage} :百分比。{rate} :每秒迭代次数。{elapsed} :已用时间。{remaining} :剩余时间。3. 设置进度条颜色你可以通过 colour 参数来设置进度条的颜色。 colour 可以接受多种颜色名称或 RGB 值。
5. 动态更新描述信息这个是最常用的功能,你可以在循环中动态更新进度条的描述信息。
行5: tqdm(total=100, desc="动态更新描述信息") :创建一个进度条对象,并设置总迭代次数为 100。 with 语句确保在退出块时自动关闭进度条。行7-17:在特定的迭代次数( i == 20 , i == 40 , i == 60 , i == 80 )时,调用 pbar.set_description() 方法来更新进度条的描述信息。pbar.update(1) :每次迭代增加进度条 1 个单位。这是必须的,否则进度条不会更新。上面的写法侵入性太强了,一大堆关于进度的代码混到主循环里面。我们尝试做一些简单封装。
先看看封装后的使用代码有哪些改进:
行4:使用 with 语法创建和使用 CustomTqdm 对象。当退出 with 语句块时, __exit__ 方法会自动调用 pbar.close() 关闭进度条。行6-9: 在循环之前,配置不同的更新点。避免循环中出现过多的进度相关代码行13:在循环中,每次迭代调用 pbar.update(1) 更新进度条。看看实现代码:
转发、关注我,私信"tqdm",获得本期源码和数据。
不要忘记一键三连。你的点赞、收藏、关注,是我创作的动力。