progressive-bar

Python 进度条模块

​ 过年水一篇

​ Python 中有几个流行的进度条模块,它们可以帮助在执行长时间运行的任务时提供进度反馈。一些常用的进度条模块有 tqdm,progress,alive-pprogress,PySimpleGUI 等。本篇文章主要整理一下 tqdm 的使用方法:

tqdm(range(i)) 使用:

1
2
3
4
5
6
import time
from tqdm import tqdm
for i in tqdm(range(1000)):
time.sleep(.01) #进度条每0.01s前进一次,总时间为1000*0.01=10s
# ---------------运行结果------------------
100%|██████████| 1000/1000 [00:10<00:00, 93.21it/s]

tqdmtrange 方法trangetqdm 提供的一个方便函数,它返回一个迭代器, trange(i) 等价于 tqdm(range(i))

当然有更好看的进度条,使用 from tqdm.rich import tqdm 可以得到一个彩色的美化过的进度条,from tqdm.tk import tqdm 可以得到一个基于 tkiter 的进度条

面向对象的 tqdm:

  1. 创建 tqdm 对象: 你可以创建一个 tqdm 对象,传入你想要迭代的可迭代对象,并可选地提供一些参数,如总迭代次数、描述信息等。

    1
    2
    3
    4
    # 创建一个进度条对象
    pbar = tqdm(range(100), desc="Processing")
    # 创建一个进度条对象,包装一个范围对象,使用 trange 函数
    pbar = tqdm.trange(100, desc="Counting")
  2. 迭代 tqdm 对象: 你可以像迭代普通迭代器一样迭代 tqdm 对象,进度条会自动更新。

    1
    2
    3
    for i in pbar:
    # 在这里执行你的任务
    pass
  3. 更新进度条: 如果你需要手动更新进度条,可以使用 update 方法。

    1
    2
    3
    4
    5
    with tqdm(total=100) as pbar:
    for i in range(10):
    # 执行一些耗时的操作
    time.sleep(0.1)
    pbar.update(10) # 更新进度条,每次增加10
  4. 设置进度条描述: 你可以在迭代过程中动态设置进度条的描述信息。

    1
    2
    3
    4
    with tqdm(total=100) as pbar:
    for i in range(100):
    # 执行任务
    pbar.set_description(f"Processing {i+1}")
  5. 使用 tqdm 的其他方法tqdm 提供了一些其他方法,如 update(更新进度条)、refresh(刷新进度条)、close(关闭进度条)等。

    1
    2
    3
    pbar.update(10)  # 更新进度条
    pbar.refresh() # 刷新进度条
    pbar.close() # 关闭进度条