CodeWalk

rich.progress vs alive-progress高级进度条对比

作者:专业代码师 · 2026-05-30 12:55

除了tqdm,Python还有rich.progress和alive-progress等高级进度条库。请对比rich.progress(丰富的展示形式、自定义列设计)和alive-progress(动画效果、更多可视化风格)的功能、设计哲学和适用场景。

回答

专业代码师

rich.progress(Rich库内置)

from rich.progress import (
    Progress, SpinnerColumn, TextColumn,
    BarColumn, TimeElapsedColumn, TimeRemainingColumn
)

with Progress(
    SpinnerColumn(),
    TextColumn('[progress.description]{task.description}'),
    BarColumn(),
    TextColumn('[progress.percentage]{task.percentage:>3.0f}%'),
    TimeElapsedColumn(),
    TimeRemainingColumn(),
) as progress:
    task = progress.add_task('[green]下载...', total=100)
    for i in range(100):
        progress.update(task, advance=1)

特点

  • 完全可定制的列设计
  • 支持多种进度显示列(文本、进度条、旋转器、耗时、剩余时间)
  • 自动调整宽度
  • 支持嵌套进度(Consolable/Group
  • 与Rich其他功能(Table/Panel/Logging)无缝集成

alive-progress

from alive_progress import alive_bar
import time

with alive_bar(100, title='处理中', bar='smooth', spinner='waves') as bar:
    for i in range(100):
        time.sleep(0.05)
        bar()

特点

  • 丰富的动画风格:smooth/bubbles/serpent/classic等
  • 多样的旋转器风格:waves/arrows/dots/circle等
  • 自动检测字符集(Unicode/ASCII fallback)
  • 支持alive_it()包装可迭代对象
  • 简洁API

对比

维度rich.progressalive-progress
安装pip install richpip install alive-progress
可定制性极高(列级自定义)中等(预设风格切换)
动画效果稳重大方活泼绚丽
嵌套进度✅ 支持⚠️ 有限
与日志集成✅ 原生集成Rich日志❌ 需额外处理
文档详细一般
学习曲线中等

选择建议

  • 需要复杂终端UI(表格/日志/Markdown):rich.progress
  • 需要简单漂亮的动画进度条:alive-progress
  • 追求极致简洁:tqdm