📅  最后修改于: 2023-12-03 15:04:25.291000             🧑  作者: Mango
在编写长时间执行任务的代码时,为了让用户更好地理解进程的状态,我们通常会加入进度条。但是,如何在 Python 中实现一个进度条呢?在这里,我们将介绍 tqdm
这个 Python 库,它可以轻松快捷地制作各种进度条。
在使用 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
支持多种进度条的样式,可以通过设置 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
可以方便地展示 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 的处理进程,并且可以方便地查看进程执行的状态。