在平时使用Python进行编写代码时,我们在编写需要执行较长时间的任务时,我们经常会使用print()来进行打桩查看我们的执行进度。其实最好的是可以实现一个进度条,使用一个专门的进度条库会更加方便。
在这里我最推荐的进度条库就是tqdm。这个库使用简单,可以在循环、函数等多种场景快速添加进度条。而且设计优雅,提供了丰富的定制化选项。
用法
(1) 下载tqdm库
pip install tqdm
然后使用import tqdm导入就可以使用了
(2) 传入可迭代对象
这里我们使用for循环来举例说明
from tqdm import tqdm
import time
for item in tqdm(range(100)):
time.sleep(0.2)
正常我们在使用for循环的时候是后面直接跟range循环数的,在这里我们在range外面加了一个tqdm(),这样在运行for循环后就会显示当前程序运行的进度,并且以进度条展示出来。
这样我们就可以根据进度条很清晰的看到当前for循环的执行进度了,比我们直接用print打桩简直好的不是太多。
当前,这里有很多种写法的,比如这里也可以使用tqdm.trange()
import tqdm
import time
for item in tqdm.trange(100):
time.sleep(0.2)
上面的实现效果和tqdm()效果是差不多的,我们也可以在后面加上参数为进度条进行命名,
import tqdm
import time
for i in tqdm.tqdm(range(100),desc="这是进度条的名称"):
time.sleep(0.2)
命名后在下方的进度就会显示我们的指定名称
3.循环嵌套进度
tqdm支持在循环中嵌套循环,每个循环都可以显示独立的进度条。实现嵌套进度条只需要传入参数positinotallow=0即可:
import tqdm
import time
for i in tqdm(range(5), position=0):
for j in tqdm(range(100), position=1):
time.sleep(0.2)
4.手动调整
可以使用with语法手动调整for循环的循环数量
import tqdm
import time
with tqdm(total=50) as number: #总进度50
for item in range(10):
time.sleep(0.2)
number.update(10)
上面代码的意表示程序的总进度是50,然后循环10次运行,每一次循环执行10/50=20%的进度,这个20%是由update()中传入的值10来除以总进度total=50计算出来的百分比。
值得注意的是,例如上面的代码中,我们循环了10次,但是每一次都运行20%的进度,那么我们运行五次就100%了,剩下的五次循环就不会记录在执行的进度条中了
同理可得:
import tqdm
import time
with tqdm(total=50) as number: #总进度50
for item in range(2):
time.sleep(0.2)
number.update(10)
如果我们只循环两次的话,则总共就只会记录40%的进度
手动调整这个功能一般常用于邮件、消息、数据传输等场景的使用,我们可以根据自己调整的进度条实时查看传输的进度。