Новости и статьи об искусственном интеллекте и нейросетях. Мы собираем и обрабатываем самую актуальную информацию из мира AI. О проекте

Статьи

Топ-7 библиотек Python для прогресс-баров

Индикаторы прогресса упрощают контроль за длительными задачами в Python-скриптах. Статья разбирает топ-7 библиотек от tqdm до click с примерами кода и сравнением. Вы узнаете, какая подойдет для терминала, Jupyter или CLI-инструментов.

17 февраля 2026 г.
5 мин
10
Топ 7 библиотек Python для прогресс-баров

Введение

Индикаторы прогресса смягчают ожидание. Они демонстрируют объем завершенной работы, остаток задачи и то, работает ли цикл или остановился. Такая визуальная подсказка повышает прозрачность при выполнении затяжных скриптов.

Эти инструменты особенно ценны при обработке данных, обучении моделей и задачах машинного обучения, которые длятся минуты или часы. Вместо слепого ожидания разработчики видят ход выполнения в реальном времени и лучше понимают поведение кода.

Здесь мы разберем семь ведущих библиотек Python для индикаторов прогресса. Для каждой приведены примеры кода — их легко внедрить в проекты без лишних усилий.

1. tqdm

Индикатор прогресса библиотеки tqdm

tqdm — одна из самых востребованных библиотек Python для добавления индикаторов прогресса в циклы и итеративные процессы. Она компактная, простая в использовании и требует минимум правок в коде.

Библиотека подстраивается под разные среды: терминалы, ноутбуки, скрипты. Это надежный вариант для задач обработки данных и машинного обучения, где нужно следить за ходом выполнения.

Основные возможности:

  • Автоматический учет прогресса для любых итераторов с минимумом изменений в коде
  • Высокая скорость работы с низкой нагрузкой даже на больших циклах
  • Ясный вывод с данными о скорости итераций и предполагаемым временем завершения

Пример кода:

# pip install tqdm
from tqdm import tqdm
import time
records = range(1_000)
for record in tqdm(records, desc="Cleaning records"):
    time.sleep(0.002)

Результат:

Cleaning records: 100%|██████████| 1000/1000 [00:02<00:00, 457.58it/s]

2. rich

Индикатор прогресса библиотеки rich

rich — современная библиотека Python для эффектного и удобного вывода в терминал, включая продвинутые индикаторы прогресса. В отличие от базовых решений, она акцентирует внимание на внешнем виде, что подходит для инструментов разработчиков, дашбордов и интерфейсов командной строки.

Индикаторы в rich поддерживают форматированный текст, динамические подписи и плавную анимацию. Они информативны и эстетичны, без необходимости добавлять сложную логику.

Основные возможности:

  • Эффектные индикаторы с цветами, стилями и плавной анимацией
  • Простой интерфейс для отслеживания прогресса по итераторам
  • Легкая связь с другими элементами rich: таблицы, логи, панели

Пример кода:

# pip install rich
from rich.progress import track
import time
endpoints = ["users", "orders", "payments", "logs"]
for api in track(endpoints, description="Fetching APIs"):
    time.sleep(0.4)

Результат:

Fetching APIs ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:01

3. alive-progress

Индикатор прогресса библиотеки alive-progress

alive-progress — библиотека Python для анимированных и привлекательных индикаторов прогресса в терминале. Она выделяется плавной анимацией и изменяющимися метками, что упрощает наблюдение за долгими задачами.

Подходит для скриптов, где важен опыт пользователя: циклы обучения, пакетная обработка, утилиты командной строки. API гибкий — легко менять заголовки, стили и обновления.

Основные возможности:

  • Плавная анимация индикаторов с изменяющимися метками
  • Гибкая настройка заголовков, стилей и частоты обновлений
  • Четкие метрики: время работы и скорость обработки

Пример кода:

# pip install alive-progress
from alive_progress import alive_bar
import time
epochs = 10
with alive_bar(epochs, title="Training model") as bar:
    for _ in range(epochs):
        time.sleep(0.6)
        bar()

Результат:

Training model |████████████████████████████████████████| 10/10 [100%] in 6.0s (1.67/s)

4. Halo

Спиннер библиотеки Halo

Halo — библиотека Python для элегантных анимированных спиннеров в терминале. Вместо процентов или полос она показывает визуальные сигналы активного процесса — идеально для задач без точной оценки прогресса.

Часто применяется для инициализации, сетевых запросов и фоновых операций, где спиннер удобнее полосы. API чистый, спиннеры настраиваемые.

Основные возможности:

  • Легкие анимации спиннеров для неопределенных задач
  • Простой API со статусами start, succeed, fail
  • Много встроенных стилей спиннеров с текстом

Пример кода:

# pip install halo
from halo import Halo
import time
spinner = Halo(text="Starting database", spinner="line")
spinner.start()
time.sleep(3)
spinner.succeed("Database ready")

Результат:

| Starting database ✔ Database ready

5. ipywidgets

Индикатор прогресса библиотеки ipywidgets

ipywidgets — библиотека Python для интерактивных элементов интерфейса в Jupyter-ноутбуках: полосы прогресса, слайдеры, кнопки, формы. В отличие от терминальных, она рисует индикаторы прямо в ноутбуке — удобно для анализа данных и экспериментов.

Интеграция с workflow ноутбуков позволяет отслеживать задачи без лишнего мусора в выводе. Отлично для экспериментов в ML, настройки параметров и исследований.

Основные возможности:

  • Нативный рендеринг полос прогресса в Jupyter
  • Интерактивные UI-элементы помимо прогресса
  • Точный контроль обновлений и отображения

Пример кода:

# pip install ipywidgets
import ipywidgets as widgets
from IPython.display import display
import time
progress = widgets.IntProgress(value=0, max=5, description="Experiments")
display(progress)
for _ in range(5):
    time.sleep(1)
    progress.value += 1

Результат:

Пример вывода индикатора ipywidgets
Другой пример индикатора ipywidgets

6. progress

progress — компактная библиотека Python для классических индикаторов прогресса в терминале. Она делает упор на простоту и читаемость, подходя для скриптов, где важнее ясность, чем эффекты.

Доступны разные форматы: полосы, спиннеры, счетчики. API прямолинейный — легко добавить в существующий код.

Основные возможности:

  • Чистые индикаторы для терминала
  • Разные типы: полосы, спиннеры
  • Минимум зависимостей, простая интеграция

Пример кода:

# pip install progress
from progress.bar import Bar
import time
files = ["a.csv", "b.csv", "c.csv"]
bar = Bar("Uploading files", max=len(files))
for _ in files:
    time.sleep(0.7)
    bar.next()
bar.finish()

Результат:

Uploading files ████████████████████████████████ 100%

7. click

Индикатор прогресса библиотеки click

click — библиотека Python для создания интерфейсов командной строки с встроенными индикаторами прогресса. В отличие от отдельных инструментов, прогресс интегрируется прямо в команды CLI — удобно для распространяемых утилит.

Полоса простая, стабильная и работает в связке с системой команд. Полезно для пайплайнов данных, автоматизации и инструментов разработчиков.

Основные возможности:

  • Встроенные индикаторы для CLI
  • Прямая интеграция с декораторами и опциями click
  • Надежная обработка вывода в терминале

Пример кода:

# pip install click
import time
import click

@click.command()
def main():
    items = list(range(30))
    with click.progressbar(items, label="Processing items") as bar:
        for item in bar:
            # Simulate work
            time.sleep(0.05)
    click.echo("Done!")

if __name__ == "__main__":
    main()

Результат:

Processing items [####################################] 100%
Done!

Сравнение библиотек для прогресс-баров в Python

Таблица ниже сравнивает рассмотренные библиотеки: где они лучше всего подходят и как используются.

БиблиотекаЛучшее применениеПоддержка средСтиль
tqdmОбработка данных и циклы MLТерминал, Jupyter NotebookПростой и информативный
richПолированные CLI-инструментыТерминал, Jupyter NotebookЦветной и стилизованный
alive-progressАнимированные долгосрочные задачиТерминал, ограниченная поддержка ноутбуковАнимированный и динамичный
HaloНеопределенные задачиТолько терминалНа основе спиннера
ipywidgetsИнтерактивные экспериментыТолько Jupyter NotebookНативный UI ноутбука
progressПростые скрипты и пакетные заданияТолько терминалМинималистичный и классический
clickИнструменты командной строкиТерминал (CLI)Функциональный вывод CLI

Горячее

Загружаем популярные статьи...