Добавление пользовательских сообщений в tqdm progressbar Python
Быстрый ответ
Да, с помощью tqdm
вы можете настроить индикаторы прогресса и добавить к ним сообщения, используя метод set_postfix
. Этот метод позволяет отображать дополнительную информацию после индикатора, улучшая отчеты о выполнении задач:
from tqdm import tqdm
for i in tqdm(range(10), desc="Процесс который мы отслеживаем"):
tqdm.write(f"Прогресс: {i+1}. Процесс кодирования данных идет полным ходом!")
Здесь код генерирует сообщение, которое обновляется после каждого шага итерации.
Отображение динамических сообщений
Одной из удобных функций tqdm
является отображение сообщений в реальном времени с использованием метода set_description()
. Вот как можно настроить индикатор прогресса для отображения сообщений 🚀:
from tqdm import trange
import time
t = trange(100, desc='Выполнение...', leave=True)
for i in t:
t.set_description(f"Процесс завершен на {i}%. ")
t.refresh()
time.sleep(0.1)
Важным аспектом здесь является мгновенное обновление сообщения, что позволяет отслеживать актуальное состояние работы без лишних уведомлений.
Чистота кода при использовании индикатора прогресса: оператор 'with'
При использовании оператора with
в комбинации с tqdm
, ваш код остается чистым и понятным даже при обработке областей видимости:
from tqdm import tqdm
import time
with tqdm(total=100, desc="Обработка...") as pbar:
for i in range(10):
pbar.set_description(f"Этап {i+1} из 10")
pbar.update(10)
time.sleep(0.1)
Совет: Внутри блока with
обязательно обновляйте прогресс, как показано здесь – с помощью update(10)
.
Замените tqdm.write
на компактное обновление без перехода на новую строку
Если вам нужно обновление без перехода на новую строку, то методы set_postfix()
или set_post_fix_str()
будут полезны. Они идеально подходят для добавления информативных примечаний:
from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Передача файлов"):
time.sleep(0.1)
tqdm.set_postfix_str(f"Обрабатывается файл номер: {i+1}")
Каждое сообщение отображается в то же место строки, что помогает избегать переполнения вывода лишними переносами.
Контроль частоты обновлений
Если обновление прогресса происходит слишком быстро, вы можете установить задержки, чтобы успеть отследить процесс:
from tqdm import tqdm
import time
for i in tqdm(range(100)):
time.sleep(0.01)
Благодаря этим задержкам, обновление происходит каждые 0.01 секунды, что позволяет видеть каждый этап выполнения задачи.
Визуализация
Добавление пользовательского сообщения в индикатор tqdm
— дело простое и занимающее всего пару строк. Вы можете украсить свой индикатор прогресса интересными деталями, как неоновую вывеску:
from tqdm import tqdm
import time
for i in tqdm(range(10), desc='Инициализация'):
time.sleep(0.5)
for i in tqdm(range(10), desc='Магия'):
tqdm.write(f'Текущий шаг: {i}')
time.sleep(0.5)
До: [➡️➡️➡️ | 60% | 🏁 ]
После: [➡️➡️➡️ | Текущий шаг: 6 из 10 | 🏁 ]
Такой индикатор будет наполнен уникальными, контекстными сообщениями, которые делают отображение прогресса более наглядным и приятным визуально.
Необычная функция set_postfix()
Использование set_postfix()
обеспечивает более детальное отображение информации, при этом не усложняя визуальное восприятие:
from tqdm import tqdm
for i in tqdm(range(10), desc="Детализация процесса"):
tqdm.set_postfix(Stage=i, refresh=True)
set_postfix()
позволяет получать лаконичные и информативные обновления, всего лишь с помощью одной строчки кода!
В курсе актуальных обновлений: Обновление tqdm
Регулярно обновляйте tqdm
до последней версии, чтобы вовремя узнать о новых возможностях, таких как параметр refresh=True
и другие. Для обновления достаточно воспользоваться одной командой pip:
pip install --upgrade tqdm
Применение новых возможностей в Python 3.8
С появлением оператора присваивания (валруса) :=
в Python 3.8, ваш код может стать ещё более компактным. Пример цикла с использованием tqdm
и оператора :=
:
from tqdm import tqdm
while (n := next(my_iterable, None)) is not None:
with tqdm(total=n) as pbar:
pass
Полезные материалы
- Документация tqdm — основной источник информации по работе с tqdm.
- GitHub – tqdm/tqdm — примеры использования и фрагменты кода.
- tqdm · PyPI — для установки и проверки актуальной версии tqdm.
- Индикаторы прогресса в Python на Towards Data Science — варианты применения tqdm.
- time — Доступ к и обработка значения времени — документация Python 3.12.2 — подробности о
time.sleep
. - sys — Системно-специфические параметры и функции — документация Python 3.12.2 — больше информации о настройке вывода с tqdm.