1 简介

在日常运行程序的过程中常常涉及到「循环迭代」过程,对于执行时间很短的程序来说倒无所谓,但对于运行过程有明显耗时的涉及「循环迭代」的程序,为其加上「进度条」(progress bar),是帮助我们监测代码执行进度以及处理中间异常错误非常实用的技巧。


本文就将为大家介绍Python中非常实用又风格迥异的两个进度条相关库——tqdmalive-progress的主要用法。

2 tqdm常用方法

tqdmPython中所有进度条相关库中最出名的,既然是最出名的,自然有它独到之处。

tqdm不仅可以生成基础的可在终端中显示的进度条,还可以配合jupyter notebookjupyter lab生成更加美观的网页「交互」部件形式的进度条,更是和pandas强强联手,为pandas中的一些操作提供专有的进度条功能。

下面我们来对tqdm的主要功能进行介绍。

2.1 基础用法

因为是第三方库,首先需要利用pip install tqdmconda install -c conda-forge tqdm对其进行安装,安装完成后先来看看它最基本的用法:


python 使用while 打印 三角形 python用while输出三角形_进度条


利用tqdm.tqdm,将for循环过程中进行迭代的对象简单包裹,就实现了为循环过程添加进度条以及打印执行速度、已运行时间与预估剩余运行时间等实用信息的功能,同样也可用于「列表推导」


python 使用while 打印 三角形 python用while输出三角形_python用while写出三角形_02


而针对迭代对象是range()的情况,tqdm还提供了简化版的trange()来代替tqdm(range())


python 使用while 打印 三角形 python用while输出三角形_python用while写出三角形_03


其附带的参数desc还可以帮助我们设置进度条的说明文字:


python 使用while 打印 三角形 python用while输出三角形_python用while写出三角形_04


而如果想要在迭代过程中变更说明文字,还可以预先实例化进度条对象,在需要刷新说明文字的时候执行相应的程序:


python 使用while 打印 三角形 python用while输出三角形_运行时间_05


但当迭代的对象长度一开始未知时,譬如对pandas中的DataFrame.itertuples()进行迭代,我们就只能对其执行速度等信息进行估计,但无法看到进度条递增情况,因为tqdm不清楚迭代的终点如何:


python 使用while 打印 三角形 python用while输出三角形_进度条_06


2.2 配合jupyter notebook/jupyter lab的美观进度条

tqdmjupyter notebookjupyter lab有着特殊的支持,且使用方法非常简单,只需要将原有的from tqdm import XXX的相应功能导入格式修改为from tqdm.notebook import XXX就可以了,以trange为例:


python 使用while 打印 三角形 python用while输出三角形_进度条_07


2.3 配合pandas中的apply

tqdmpandas中的apply()过程提供了特殊的支持,因为pandas中的apply()本质上就是串行循环运算,你可以将pandas中的任何apply操作替换为progress_apply,并且记住每个单独的progress_apply前要先执行tqdm.pandas(),就像下面的例子一样:


python 使用while 打印 三角形 python用while输出三角形_进度条_08