Python模块之tqdm详细功能介绍及示例

tqdm 是 Python 中一个用于显示进度条的流行库,支持多种场景(如循环、文件处理、嵌套进度条等)。以下是其核心方法及实际示例:


1. 基础方法

1.1 tqdm(iterable, **kwargs) 构造函数
  • 作用:创建进度条对象。
  • 关键参数
    • total:总迭代次数(默认自动推断)。
    • desc:进度条左侧描述(如 “Processing”)。
    • unit:单位名称(如 “file”)。
    • leave:完成后是否保留进度条(默认 True)。
    • ncols:进度条宽度(默认自适应)。
    • colour:颜色(如 'green')。

示例

from tqdm import tqdm
import time

for i in tqdm(range(100), desc="下载进度", colour="green"):
    time.sleep(0.1)

1.2 update(n=1)
  • 作用:手动更新进度条步数。
  • 场景:在非直接迭代对象时使用(如手动控制进度)。

示例

progress = tqdm(total=100, desc="处理文件")
for i in range(10):
    time.sleep(0.2)
    progress.update(10)  # 每次更新10步
progress.close()

1.3 close()
  • 作用:关闭进度条并释放资源。

示例

pbar = tqdm(total=5)
for i in range(5):
    pbar.update(1)
pbar.close()  # 显式关闭

2. 动态信息控制

2.1 set_description(desc)
  • 作用:动态更新左侧描述。

示例

pbar = tqdm(range(10), desc="初始化")
for i in pbar:
    pbar.set_description(f"处理第 {i} 项")
    time.sleep(0.1)

2.2 set_postfix(**kwargs)
  • 作用:在右侧显示动态附加信息(如损失值、准确率)。

示例

pbar = tqdm(range(100), desc="训练模型")
for i in pbar:
    loss = 1 / (i + 1)
    acc = i * 0.01
    pbar.set_postfix(loss=f"{loss:.2f}", accuracy=f"{acc:.2%}")
    time.sleep(0.1)

3. 输出与刷新

3.1 write(msg)
  • 作用:在进度条下方输出信息,避免打断显示。

示例

pbar = tqdm(range(5), desc="处理数据")
for i in pbar:
    if i == 2:
        pbar.write("遇到错误,但继续执行...")
    time.sleep(0.5)

3.2 refresh()
  • 作用:强制刷新进度条显示,适用于外部修改后手动更新。

4. 其他实用功能

4.1 trange 快捷函数
  • 作用:简化 tqdm(range(n)) 的写法。

示例

from tqdm import trange

for i in trange(100, desc="快速进度条"):
    time.sleep(0.1)

4.2 嵌套进度条
  • 场景:处理多层循环时,显示多个进度条。

示例

for i in tqdm(range(3), desc="外层循环"):
    for j in tqdm(range(5), desc="内层循环", leave=False):
        time.sleep(0.1)

4.3 Pandas 集成
  • 作用:为 Pandas 操作(如 apply)添加进度条。

示例

import pandas as pd
from tqdm import tqdm
tqdm.pandas()

df = pd.DataFrame({'data': range(100)})
df['data_squared'] = df['data'].progress_apply(lambda x: x ** 2)

5. 高级参数示例

# 自定义进度条格式
pbar = tqdm(
    range(100),
    bar_format="{l_bar}{bar:20}{r_bar}",
    ncols=80,
    unit="文件",
    unit_scale=True
)
for i in pbar:
    time.sleep(0.1)

总结

  • 核心方法update(), set_description(), set_postfix()
  • 适用场景:循环、文件处理、训练模型、嵌套任务。
  • 定制性:支持颜色、宽度、单位、动态信息等参数。

通过灵活组合这些方法,可以在不同场景下创建直观的进度提示!

你可能感兴趣的:(Python,DevOps技术分享,容器技术,python,人工智能,深度学习,运维开发,devops,云原生,开发语言)