你还在使用打桩来记录 for 循环吗?

开发
我们经常会使用print()来进行打桩查看我们的执行进度,其实最好的是可以实现一个进度条,使用一个专门的进度条库会更加方便。

在平时使用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%的进度

手动调整这个功能一般常用于邮件、消息、数据传输等场景的使用,我们可以根据自己调整的进度条实时查看传输的进度。

责任编辑:赵宁宁 来源: Python技术
相关推荐

2018-09-04 05:05:29

2014-01-09 14:52:47

创意开源

2024-09-02 09:31:19

2012-07-19 10:03:32

2010-11-23 10:53:40

骑驴找马

2024-11-12 16:28:34

2018-04-02 10:28:10

iOSPWA苹果

2015-03-04 10:49:30

2019-04-08 14:58:36

数据库SQL数据类型

2020-02-21 14:15:40

SimpleDateFJava多线程

2020-03-04 14:05:35

戴尔

2018-01-16 20:14:37

OpenPOWERAIIBM

2020-12-09 10:34:51

htopLinux命令

2020-06-29 07:23:54

for循环数组JavaScrip

2016-08-21 14:45:41

数据仓库自助型数据准备工具

2022-09-13 17:54:55

CSS定时器监听事件

2020-04-28 08:55:11

MySQL数据库

2020-01-20 14:30:39

HTTP概念标头

2015-12-29 13:53:14

BeeCloud云计算支付

2023-11-03 08:28:19

点赞
收藏

51CTO技术栈公众号