tqdm 进度条库说明
tqdm 是一个快速、可扩展的进度条库,名称来源于阿拉伯语 taqaddum (تقدّم),意为"进展"。它可以在循环或迭代过程中显示进度,让用户直观地了解程序执行的状态。
主要特点:
- 自动计算剩余时间
- 显示迭代速度
- 支持嵌套进度条
- 支持多线程/进程
- 可自定义外观
tqdm 安装指南
使用 pip 安装(推荐)
最简单的安装方式是使用 pip:
pip install tqdm
如果想安装最新的开发版本:
pip install -U tqdm
使用 conda 安装
如果你使用 Anaconda 或 Miniconda:
conda install tqdm
针对特定用户安装
如果你想只为当前用户安装:
pip install --user tqdm
验证安装
安装完成后,可以在 Python 中验证安装是否成功:
from tqdm import tqdm
print(tqdm.__version__)
可选依赖
setproctitle: 在进程标题中显示进度条colorama: Windows 系统下的彩色输出支持
安装这些可选依赖:
pip install tqdm[slack] # Slack 集成支持
pip install tqdm[telegram] # Telegram 集成支持
注意事项
- 建议在虚拟环境中安装以避免包冲突
- 如果遇到权限问题,可能需要使用
sudo pip install tqdm - Windows 用户可能需要以管理员身份运行命令提示符
安装完成后即可开始使用 tqdm 的进度条功能。
基本使用示例
from tqdm import tqdm
import time
# 基础循环示例
for i in tqdm(range(100)):
time.sleep(0.1) # 模拟耗时操作
# 列表迭代示例
items = ['a', 'b', 'c', 'd']
for item in tqdm(items, desc='处理项目'):
time.sleep(0.5) # 处理每个项目
# 手动更新进度条
with tqdm(total=100, desc='下载进度') as pbar:
for i in range(10):
time.sleep(1)
pbar.update(10) # 每次更新10%
# 处理大文件示例
with open('large_file.txt', 'r') as f:
for line in tqdm(f, desc='读取文件'):
# 处理每一行
pass

高级使用示例
from tqdm import tqdm
import time
# 自定义格式的进度条
for i in tqdm(range(100),
desc='处理进度',
ncols=80, # 进度条总长度
unit='步', # 单位
bar_format='{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]'):
time.sleep(0.1)
# 嵌套进度条
for i in tqdm(range(10), desc='外层循环'):
for j in tqdm(range(5), desc='内层循环', leave=False):
time.sleep(0.1)


使用注意事项:
- 对于未知长度的迭代,可以使用
tqdm(iterator) - 使用
desc参数可以添加描述文字 leave=False可以在完成后删除进度条unit参数可以自定义进度单位ncols可以设置进度条宽度
tqdm 通过在终端输出中覆盖前一行来实现动态更新,这使得它在处理长时间运行的任务时特别有用,能够给用户良好的反馈体验。
Python 进度条库比较
1. Rich
Rich 是一个功能丰富的终端美化库,包含进度条功能。
from rich.progress import track
for i in track(range(100), description="处理中..."):
# 处理逻辑
pass
特点:
- 支持多种样式和颜色
- 可显示表格、树形结构
- 支持嵌套进度条
- 提供丰富的终端格式化功能
2. alive-progress
现代化、动画效果丰富的进度条。
from alive_progress import alive_bar
with alive_bar(100) as bar:
for i in range(100):
bar() # 更新进度
特点:
- 丰富的动画效果
- 自动调整刷新率
- 支持自定义样式
- 显示运行时间和ETA
3. progressbar2
经典的进度条库,功能完善。
import progressbar
bar = progressbar.ProgressBar()
for i in bar(range(100)):
# 处理逻辑
pass
特点:
- 简单易用
- 支持自定义部件
- 可显示速度、剩余时间等信息
4. progress
轻量级进度条库。
import progress.bar
bar = progress.bar.Bar('处理中', max=100)
for i in range(100):
bar.next()
bar.finish()
特点:
- 代码简洁
- 占用资源少
- 基础功能完善
5. halo
专注于加载动画的库。
from halo import Halo
spinner = Halo(text='加载中', spinner='dots')
spinner.start()
# 处理逻辑
spinner.stop()
特点:
- 多种动画效果
- 适合未知进度的任务
- 支持颜色和自定义文本
安装命令
# Rich
pip install rich
# alive-progress
pip install alive-progress
# progressbar2
pip install progressbar2
# progress
pip install progress
# halo
pip install halo
选择建议
- 简单任务:使用
tqdm - 美观需求:使用
Rich或alive-progress - 轻量需求:使用
progress - 未知进度:使用
halo - 复杂定制:使用
progressbar2
每个库都有其特点和适用场景,可以根据具体需求选择合适的工具。