基于 tqdm (29,000+ GitHub Stars) 的学习改造项目
tqdm 是 Python 中最流行的进度条库,名字来源于阿拉伯语 taqaddum (进步), 也是西班牙语 te quiero demasiado (我超爱你) 的缩写。
本项目对其核心代码进行精简,并添加了一个包含 12 个趣味演示 的综合 demo, 帮助你快速理解 tqdm 的设计与用法。
tqdm_demo/
├── tqdm/ # tqdm 核心库(精简版)
├── demo.py # 🌟 12个炫酷演示脚本
├── run.py # 单个示例快速运行
├── LICENCE # MIT 开源协议
└── README.md # 本文件
# 安装依赖(仅 colorama)
pip install colorama
# 运行全部 12 个演示
python demo.py
# 运行单个演示
python run.py basic # 基础进度条
python run.py colors # 彩色进度条
python run.py download # 文件下载模拟
python run.py nested # 嵌套进度条
python run.py custom # 自定义格式
python run.py concurrent # 并发处理
python run.py training # ML训练模拟| # | 演示 | 说明 |
|---|---|---|
| 1 | 基础进度条 | tqdm(iterable) 最简单的用法 |
| 2 | trange 快捷 | trange(N) == tqdm(range(N)) |
| 3 | 彩色进度条 | 支持 red/green/blue/yellow 等 |
| 4 | 进度条样式 | ASCII / Unicode 方块样式 |
| 5 | 嵌套进度条 | 多层循环进度显示 |
| 6 | 文件下载 | 模拟下载,显示速度和大小 |
| 7 | 批量处理 | pbar.update() 手动控制 |
| 8 | 动态描述 | 实时改变进度条文字 |
| 9 | 日志输出 | tqdm.write() 不打断进度 |
| 10 | 自定义格式 | 创意进度条(💣扫雷 🚀发射) |
| 11 | 并发处理 | thread_map 多线程+进度 |
| 12 | ML训练 | 综合模拟神经网络训练 |
# tqdm 本质是一个可迭代的包装器
class tqdm:
def __init__(self, iterable, desc="", total=None, ...):
self.iterable = iterable
self.n = 0 # 当前进度
self.total = total # 总数
self.start_t = time() # 开始时间
...
def __iter__(self):
for obj in self.iterable:
yield obj
self.n += 1
self.refresh() # 刷新显示
self.close()核心技巧:
- \r 回车符:回到行首覆盖更新(而非换行)
- EMA 平滑:用指数移动平均计算速率,避免抖动
- 自适应刷新:根据
mininterval和miniters控制刷新频率
MIT License — 详见 LICENCE
- tqdm: https://github.com/tqdm/tqdm
- 本项目为学习改造版本,仅供学习参考