程序运行过程中进度条显示特别重要,Python中使用
tqdm
库作为进度条操作工具,本文简要介绍tqdm
常用功能。
背景 {#背景}
tqdm
源自阿拉伯语 taqaddum,意思是进程( "progress");也是西班牙语中 "I love you so much" (te quiero demasiado)的缩写(这个是碰了巧了)
- 该模块的作用就是通过装饰
tqdm(iterable)
任何可迭代的对象,使代码中的循环(loop)在运行过程中为用户展示进度条。 - 盗了官网的图直观展示一下效果
准备工作 {#准备工作}
引入包 {#引入包}
生成tqdm对象 {#生成tqdm对象}
tqdm类的构造函数: 参数很复杂,这里介绍几个常用参数和方法,详细情况参考官网文档
- iterable: 最常用的参数,表示使用这个迭代对象来初始化
tqdm
对象,如果手动更新进度条的话该参数可以为None
- desc: 进度条的描述信息
- total: 进度条总格子数量
- miniters: int, optional。迭代过程中进度显示的最小更新间隔。
- unit : str, optional。定义每个迭代的单元。默认为
"it"
,即每个迭代,在下载或解压时,设为"B"
,代表每个"字节"。 - unit_scale: bool or int or float, optional。默认为
False
,如果设置为1
或者True
,会自动根据国际单位制进行转换 (kilo, mega, etc.) 。比如,在下载进度条的例子中,如果为False
,数据大小是按照字节显示,设为True
之后转换为Kb、Mb。
使用方法 {#使用方法}
自动控制进度 {#自动控制进度}
- 将
tqdm()
直接包装在任意迭代器上:
- 加入描述:
trange(i)
是对tqdm(range(i))
特殊优化过的实例:
- 如果要精细控制
tqdm
对象,需要提前生成对象,并在循环中加以控制:
使用外部对象可以直接建立对象,此时在循环之外需要关闭该对象: 也可以使用
with
功能,在循环体之外由编译器自动结束其生命周期:
手动控制进度 {#手动控制进度}
- 手动运行时
tqdm
对象不需要迭代器作为初始化参数,但需要指定最大长度total
的值: