Python 速查系列之 tqdm :实现进度条,一篇学会

1 tqdm 简单介绍

        tqdm 库是一个在 Python 中常用的进度条工具,能够帮助我们实时观测代码的运行进度.

2 tqdm 安装

        首先检查是否已安装 tqdm 库,在终端输入:

pip show tqdm

        若提示 WARNING: Package(s) not found: tqdm,则输入如下命令安装:

pip install tqdm

3 基本用法

 3.1  在 for 循环中使用 tqdm:

        首先导入 tqdm 库(注意不是 import tqdm,非常容易漏):

from tqdm import tqdm

        定义一个简单的 for 循环,并在 range( ) 外套上 tqdm( ).

for i in tqdm(range(10)):  
   print(i)

         运行结果如下:

100%|██████████| 10/10 [00:00<00:00, 125203.10it/s]

3.2 使用 trange 简化代码:

        trange 是 tqdm 库提供的一个便捷函数,trange 等价于 tqdm (range),使用 trange 会让代码看起来更加简洁,比如能 trange 把上文的代码改写成:

from tqdm import trange  
for i in trange(10):  
   print(i)

        运行结果如下:

100%|██████████| 10/10 [00:00<00:00, 181571.60it/s]

4 高级用法

        如果不满意 tqdm 提供的默认进度条样式,也可以手动进行修改.

4.1 修改进度条的样式

        通过 ncols, position, leave, bar_format 等参数可以定制进度条的样式,例如:

from tqdm import tqdm  
import time  
  
# 自定义进度条长度和样式  
for i in tqdm(range(100), ncols=50, position=0, leave=True, bar_format='{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}{postfix}]'):  
    time.sleep(0.01)

        运行结果如下:

100%|█████████| 10/10 [00:00<00:00, 162569.92it/s]

        其中各个参数的含义如下:

        · ncols:决定了进度条的总宽度,增加nols的值会让进度条更宽.

        · position:这个参数控制进度条在终端中的位置,position=0 则表示会出现在顶部(第一行),而position=1 则会让进度条在第二行显示.

        · leave:决定了循环结束后是否保留进度条. 如果 leave=False 则在循环后进度条将被清除.

        · bar_format:决定了进度条的显示格式. 例如,{l_bar}{bar} 分别代表已完成的进度条部分和未完成的进度条部分,{n_fmt}{total_fmt} 分别代表当前迭代次数和总迭代次数,等等.

        尝试将 ncols 的值修改为 70,运行结果如下,可以看到进度条明显变长:

100%|█████████████████████████████| 10/10 [00:00<00:00, 169125.16it/s]

4.2 显示性能指标

        tqdm 默认会显示处理速度(items/s),但可以通过 unit 和 unit_scale 参数来调整速度的单位.,例如:

from tqdm import tqdm  
import time  
  
# 显示性能指标,自定义单位  
for i in tqdm(range(1000), desc="Processing", unit="it", unit_scale=True):  
    time.sleep(0.01)

        运行结果如下:

Processing: 100%|██████████| 1.00k/1.00k [00:10<00:00, 97.4it/s]

        其中各个参数的含义如下:

        · unit:设置速度单位为 "it"  ( 迭代次数 ).

        · unit_scale:设置为 True 会根据迭代次数自动选择合适的单位 ( 如 K,M,G 等 ) .

4.3 设置进度描述

        通过 desc 参数可以设置进度条的描述信息:

from tqdm import tqdm  
import time  
  
# 设置进度描述  
for i in tqdm(range(100), desc="Downloading files"):  
    time.sleep(0.01)

        运行结果如下:

Downloading files: 100%|██████████| 100/100 [00:01<00:00, 97.77it/s]

 4.4 手动模式

        tqdm 还可以实现手动增加进度:

with tqdm(total=100) as pbar:
    for i in range(10):
        sleep(0.1)
        pbar.update(10)

        运行结果如下:

100%|██████████| 100/100 [00:01<00:00, 99.30it/s]

5 注

        · 当出现多层循环的时候,一般仅把 tqdm 使用在最外层的循环上.

        · 在复现本文的代码时,如果遇到问题,欢迎私信或评论区联系作者.

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值