📜  Python|如何使用 tqdm 制作终端进度条(1)

📅  最后修改于: 2023-12-03 15:04:25.291000             🧑  作者: Mango

Python | 如何使用 tqdm 制作终端进度条

导言

在编写长时间执行任务的代码时,为了让用户更好地理解进程的状态,我们通常会加入进度条。但是,如何在 Python 中实现一个进度条呢?在这里,我们将介绍 tqdm 这个 Python 库,它可以轻松快捷地制作各种进度条。

安装 tqdm

在使用 tqdm 之前,我们需要先将其安装。打开终端,输入以下命令:

pip install tqdm

即可安装完成。

简单应用示例

以下是一个示例,展示了如何使用 tqdm 快速创建一个进度条。在本例中,我们将从 0 到 100 循环,每次循环休眠 0.1 秒:

from tqdm import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(0.1)

在运行程序时,终端将会显示以下内容:

100%|██████████| 100/100 [00:12<00:00,  8.06it/s]

如图所示,进度条已经成功地创建出来了,并且显示了进程执行的进度。

进度条的类型

除了默认的进度条类型外,tqdm 还支持多种进度条类型。以下是其中的一些标准类型:

| 进度条类型 | 描述 | | ---------- | ------------------------------------------------------- | | tqdm | 基本进度条。 | | tqdm_gui | 在图形界面环境中使用的进度条。仅当 GUI 应用程序已启动时才能使用。 | | tqdm_notebook | 在 Jupyter 笔记本中使用的进度条。 |

根据不同的需求,选择合适的进度条类型即可。

以下是一个示例,展示了如何使用 tqdm_gui 创建一个进度条:

from tqdm import tqdm_gui
import time

for i in tqdm_gui(range(100)):
    time.sleep(0.1)

在运行程序时,tqdm_gui 将弹出一个进度条窗口,如图所示:

tqdm_gui

进度条的样式

tqdm 支持多种进度条的样式,可以通过设置 bar_format 参数来实现。以下是一些常见的样式格式:

| 样式名称 | 样式描述 | | ------------- | ------------------------------------------------------------- | | 'bar' | 进度条的默认样式。 | | '{''}' | 使用大括号将其它样式插入进度条字符串中。 | | '{'percentage:3.0f%'}' | 显示百分比,保留 3 位小数。 | | '{'elapsed}<{remaining}, {rate_fmt}' | 显示已过时间和剩余时间,以及速率。 |

以下是一个示例,展示了如何设置进度条样式:

from tqdm import tqdm
import time

# 使用默认样式
for i in tqdm(range(100)):
    time.sleep(0.1)

# 设置进度条样式
bar_format='{l_bar}{bar:20}{r_bar}{bar:-10b}'
for i in tqdm(range(100), bar_format=bar_format):
    time.sleep(0.1)

在运行程序时,终端将会显示以下内容:

100%|██████████| 100/100 [00:12<00:00,  8.06it/s]

100%|██████████| 100/100 [00:13<00:00,  7.39it/s]

可以看到,第二个进度条样式与第一个不同,这是因为我们通过 bar_format 参数将其样式设置为了 '{l_bar}{bar:20}{r_bar}{bar:-10b}'

在 Pandas 中使用 tqdm

在 Pandas 中使用 tqdm 可以方便地展示 DataFrame 的处理进程。以下是一个简单的示例:

from tqdm import tqdm
import pandas as pd
import time

# 创建 DataFrame
df = pd.DataFrame({'col1': [1, 2, 3, 4, 5], 'col2': [6, 7, 8, 9, 10]})

# 使用 tqdm 处理 DataFrame
for _, row in tqdm(df.iterrows(), total=len(df)):
    # 在此处执行某些处理
    time.sleep(0.2)

在运行程序时,终端将会显示一个进度条,如图所示:

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

可以看到,进度条已经成功地展示了 DataFrame 的处理进程,并且可以方便地查看进程执行的状态。