tqdm 是一个快速、可扩展的 Python 进度条库,用于在长时间运行的循环中显示实时进度条。以下是详细的使用教程。
安装
# 使用 pip 安装
pip install tqdm
# 或使用 conda 安装
conda install -c conda-forge tqdm
基本用法
1. 简单进度条
from tqdm import tqdm
import time
for i in tqdm(range(100)):
time.sleep(0.01) # 模拟耗时操作
2. 添加描述信息
for i in tqdm(range(100), desc="Processing"):
time.sleep(0.01)
3. 自定义进度条单位
for i in tqdm(range(100), unit="item"):
time.sleep(0.01)
高级用法
1. 作为装饰器使用
from tqdm import tqdm
@tqdm(desc="Function Progress")
def long_function(n):
for _ in range(n):
time.sleep(0.01)
long_function(100)
2. 手动控制进度条
from tqdm import tqdm
pbar = tqdm(total=100)
for i in range(10):
time.sleep(0.1)
pbar.update(10) # 手动更新进度
pbar.close()
3. 嵌套进度条
from tqdm import tqdm, trange
for i in trange(3, desc="Outer Loop"):
for j in tqdm(range(5), desc="Inner Loop", leave=False):
time.sleep(0.1)
4. 多进程支持
from tqdm.contrib.concurrent import process_map
import time
def task(x):
time.sleep(0.1)
return x
results = process_map(task, range(100), max_workers=4)
在 Jupyter Notebook 中使用
from tqdm.notebook import tqdm
import time
for i in tqdm(range(100)):
time.sleep(0.01)
自定义样式
1. 修改进度条描述和单位
for i in tqdm(range(100), desc="Loading", unit="step"):
time.sleep(0.01)
2. 设置进度条颜色(需 colorama)
from tqdm import tqdm
import colorama
colorama.init()
for i in tqdm(range(100), bar_format="{l_bar}%s{bar}%s{r_bar}" % (colorama.Fore.RED, colorama.Fore.RESET)):
time.sleep(0.01)
注意事项
- 性能开销:
tqdm的性能开销极低,但在高频循环中建议测试性能影响。 - 多线程/多进程:默认进度条可能不兼容多线程/多进程,可使用
tqdm.contrib.concurrent模块。 - 异常处理:在
try-except块中使用时,需手动关闭进度条:
pbar = tqdm(total=100)
try:
for i in range(100):
time.sleep(0.01)
pbar.update(1)
except Exception as e:
pbar.close()
raise e
总结
tqdm 是一个轻量级且功能强大的进度条工具,适用于各种需要可视化进度的场景。通过简单的 API 可以快速集成到现有代码中,同时支持丰富的自定义选项。
更多详情请参考 官方文档