tqdm 是 Python 的一个第三方库,用于显示迴圈或任务的进度条,让开发者可以更直观地了解程序执行的进度。这在执行长时间运行的任务(如迴圈处理、大型文件的读写、爬虫等)时非常有用。

  • 安装要使用 tqdm,需要先安装:pip install tqdm

  • 基本用法tqdm 可以直接用在 for 迴圈中。范例:简单进度条

  • from tqdm import tqdm
    import time

    for i in tqdm(range(10)):
    time.sleep(0.5) # 模拟耗时任务

    执行结果会显示一个进度条:

    50%|███████████ | 5/10 [00:02<00:02, 2.00it/s]

  • 进阶用法3-1.进度条描述:可以添加一段描述,说明正在处理的内容。
  • for i in tqdm(range(10), desc="Processing"):
    time.sleep(0.5)

    3-2. 处理数据集合:可以使用 tqdm 包装任何可迭代对象。

    data = [1, 2, 3, 4, 5]
    for item in tqdm(data, desc="Loading data"):
    time.sleep(0.5)

    3-3. 手动更新进度:适合用于非迴圈任务。

    from tqdm import tqdm
    import time

    with tqdm(total=100) as pbar:
    for i in range(10):
    time.sleep(0.5)
    pbar.update(10) # 每次更新进度条 10%
    ```

    3-4. 结合函数:tqdm 可以直接用于函数式处理。

    from tqdm import tqdmimport time

    results = [x**2 for x in tqdm(range(1000), desc="Calculating squares")]

    3-5. 嵌套进度条:对于多层迴圈,可以使用嵌套的进度条:

    from tqdm import tqdmimport time

    for i in tqdm(range(3), desc="Outer loop"):for j in tqdm(range(5), desc="Inner loop", leave=False):time.sleep(0.1)

    #### 特性
    - 进度显示丰富
    包含当前进度、耗时、估计剩余时间、每秒处理速度等信息。

    Processing: 50%|█████ | 5/10 [00:02<00:02, 2.00it/s]

    - 高度自定义
    支持自定义进度条样式、长度、颜色等。
    - 多线程和多进程支持
    可以用于并行处理任务。
    - 支持多平台
    在大多数终端和 Jupyter Notebook 中均可正常显示。

    #### 与其他库结合
    1. 结合 Pandas
    在处理 DataFrame 时显示进度条。

    import pandas as pdfrom tqdm import tqdm

    tqdm.pandas(desc="Processing rows")df = pd.DataFrame({\'a\': range(100)})df[\'b\'] = df[\'a\'].progress_apply(lambda x: x**2)

    2. 结合 asyncio
    用于异步任务的进度显示。

    import asynciofrom tqdm.asyncio import tqdm

    async def async_task(n):await asyncio.sleep(0.5)return n

    async def main():tasks = [async_task(i) for i in range(10)]results = [await t for t in tqdm(asyncio.as_completed(tasks), total=len(tasks))]print(results)

    asyncio.run(main())

    #### 常用参数

    | 参数名称 | 说明 | 范例 |
    |----------|--------------------------------|------------------------------------------|
    | **desc** | 进度条前的描述文字 | `tqdm(range(10), desc="Loading")` |
    | **total** | 设置进度条总数量(适用于手动更新) | `tqdm(total=100)` |
    | **leave** | 任务结束后是否保留进度条 | `tqdm(range(10), leave=False)` |
    | **ncols** | 设置进度条宽度 | `tqdm(range(10), ncols=80)` |
    | **unit** | 单位显示 | `tqdm(range(10), unit="files")` |

    #### 小结
    tqdm 是一个功能强大且简单易用的工具,用于让程序的执行进度一目了然。无论是处理迴圈还是批量任务,它都能显着提升用户体验,并适合与各种 Python 库结合使用。