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]
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 库结合使用。