python中tqdm的用法

tqdm 是一个非常流行的 Python 库,用于在循环中显示进度条。它可以实时显示任务的完成进度,帮助开发者了解程序的运行状态,尤其是在处理耗时任务时非常有用。

以下是 tqdm 的基本用法和一些常见场景的示例。


安装

安装 tqdm,可以通过以下命令:

pip install tqdm

基本用法

1. 简单的进度条
from tqdm import tqdm
import time

# 模拟一个循环任务
for i in tqdm(range(100)):
    time.sleep(0.05)  # 模拟耗时操作

输出效果

 50%|█████████████████████████████████▌                    | 50/100 [00:02<00:02, 24.38it/s]
  • tqdm 自动计算并显示当前进度、总任务数、剩余时间等信息。
  • range(100) 表示任务总数为 100。
  • time.sleep(0.05) 模拟每次迭代需要的时间。

2. 显示额外信息(set_postfix

tqdm 支持通过 set_postfix 方法动态显示额外信息,例如损失值、准确率等。

from tqdm import tqdm
import time
import numpy as np

# 模拟一个训练过程
loss_list = []
for i in tqdm(range(100)):
    loss = np.random.rand()  # 随机生成一个损失值
    loss_list.append(loss)
    
    # 每 10 次更新一次损失值
    if (i + 1) % 10 == 0:
        tqdm.set_postfix({'loss': '%.3f' % np.mean(loss_list[-10:])})
    
    time.sleep(0.05)  # 模拟耗时操作

输出效果

 50%|█████████████████████████████████▌                    | 50/100 [00:02<00:02, 24.38it/s, loss=0.498]
  • set_postfix 方法可以动态更新进度条后缀信息。
  • 这里每 10 次迭代计算最近 10 次的平均损失值,并显示在进度条上。

常见场景

3. 外层嵌套循环

当有多个嵌套循环时,可以使用 tqdmtqdm.tqdmtqdm.tqdm_notebook 来分别处理外层和内层循环。

from tqdm import tqdm
import time

# 外层循环
for i in tqdm(range(5), desc="Outer Loop"):
    # 内层循环
    for j in tqdm(range(100), desc="Inner Loop", leave=False):
        time.sleep(0.01)  # 模拟耗时操作

输出效果

Outer Loop:  20%|█████▌                              | 1/5 [00:01<00:04,  1.02s/it]
Inner Loop:  50%|████████████████████▌              | 50/100 [00:00<00:00, 98.04it/s]
  • desc 参数可以为进度条添加描述。
  • leave=False 表示内层进度条完成后不会保留,避免屏幕混乱。

4. 手动更新进度条

手动控制进度条的更新,而不是依赖 for 循环。

from tqdm import tqdm
import time

# 创建一个进度条对象
pbar = tqdm(total=100, desc="Manual Update")

for i in range(100):
    time.sleep(0.05)  # 模拟耗时操作
    pbar.update(1)  # 手动更新进度条

pbar.close()  # 关闭进度条

输出效果

Manual Update:  50%|█████████████████████████████████▌      | 50/100 [00:02<00:02, 24.38it/s]
  • total 参数指定总任务数。
  • update(n) 方法手动更新进度条,n 表示完成的任务数。

5. 在 Jupyter Notebook 中使用

在 Jupyter Notebook 中使用 tqdm,需要使用 tqdm.notebook.tqdm

from tqdm.notebook import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(0.05)  # 模拟耗时操作
  • tqdm.notebook.tqdm 会生成适合 Jupyter Notebook 的进度条。

其他常用参数

参数名 含义
total 总任务数,默认从可迭代对象推断。
desc 进度条前缀描述文字。
unit 进度单位,默认为 'it'(iteration)。
leave 是否在完成后保留进度条,默认为 True
ncols 进度条宽度(字符数),默认自动调整。
mininterval 进度条更新的最小时间间隔(秒),默认为 0.1 秒。
ascii 是否使用 ASCII 字符绘制进度条,默认为 False(使用 Unicode 字符)。

示例:结合文件读取

from tqdm import tqdm

# 读取大文件并显示进度
with open("large_file.txt", "r") as f:
    for line in tqdm(f, desc="Reading File"):
        pass  # 处理每一行

总结

tqdm 是一个简单但功能强大的工具,适用于各种需要显示进度条的场景。无论是简单的循环还是复杂的嵌套任务,都可以轻松集成 tqdm 来提升用户体验。

你可能感兴趣的:(python,python,开发语言)