Язык программирования Python

Прогресс бар в python: PyPrind с примером использования.

Введение

Я помню времена, когда мы запускали программу на Python, включающую большие циклы. Часто это занимает много времени, и мы не знаем, что происходит в цикле, и нет ли какой-нибудь ошибки, из-за которой он вообще не завершится. Для таких случаев мы можем использовать очень простой и полезный инструмент для просмотра хода выполнения наших процессов на python.

До сих пор, если мы делали цикл и хотели увидеть процесс этого цикла, нам приходилось делать “print”, чтобы получить информацию о состоянии процесса. В большинстве случаев мы объявляем переменную-счетчик, обновляем ее на каждой итерации и выводим на печать.

Этот подход можно заменить другим, который входит в пакет PyPrind.

PyPrind (Python Progress Indicator) предоставляет нам индикатор прогресса, который показывает процент выполнения программы (или цикла), а значит, делает процесс наглядным для пользователя.

Установка PyPrind

Установить его можно с помощью инструмента pip или с помощью conda:

pip install pyprind conda install pyprind

Пример использования PyPrind

Для того чтобы использовать его, необходимо выполнить импорт.

Затем мы объявляем прогресс-бар, указывая количество шагов, которые будут у него.

После объявления бара мы можем обновить каждый из шагов с помощью функции update.

import pyprind n = 1000000 bar = pyprind.ProgBar(n) for i in range(n): bar.update()
Code language: JavaScript (javascript)

Как вы можете видеть в предыдущем примере, бар будет делать один шаг для каждого из обновлений, которые мы делаем.

В консоли вы можете увидеть следующее:

python progess.py 0% [##############################] 100% | ETA: 00:00:00 Total time elapsed: 00:00:02
Code language: PHP (php)

Помимо прогресс-бара, есть возможность показать процент.

Это делается с помощью функции “ProgPercent” следующим образом:

import pyprind n = 1000000 bar = pyprind.ProgPercent(n) for i in range(n): bar.update()
Code language: JavaScript (javascript)
python progress.py [100 %] Time elapsed: 00:00:02 | ETA: 00:00:00 Total time elapsed: 00:00:02

Опции

Ниже перечислены параметры, которые можно задать:

ProgBar:

  • iterations (int): количество итераций, необходимых для завершения бара.
  • track_time (bool, по умолчанию=True): Вывод времени, используемого при завершении цикла.
  • width (int, по умолчанию=30): Указывает ширину полосы в символах. (Только для случая ProgBar)
  • stream (int, по умолчанию=2): Указывает, куда выводится текст. 1′ для stdout, ‘2’ для stderr.
  • title (str): Определяет заголовок, который отображается в строке.
  • monitor (bool, default=’False’): мониторинг использования процессора и памяти, если установлено значение True (требуется пакет ‘psutil’).
  • bar_char(char): Определяет тип символа, заполняющего индикатор выполнения.

Полный пример со всеми этими параметрами будет выглядеть так:

import pyprind import time n = 1000000 bar = pyprind.ProgBar(n , track_time=True , width= 40 , stream=2 , title='Мой первый цикл' , monitor=False , bar_char='¦' ) for i in range(n): bar.update() print(bar)
Code language: PHP (php)

результат:

python progress.py Мой первый цикл 0% [¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦] 100% | ETA: 00:00:00 Total time elapsed: 00:00:02 Title: Мой первый цикл Started: 10/24/2019 10:42:00 Finished: 10/24/2019 10:42:03 Total time elapsed: 00:00:02 CPU %: 100.00 Memory %: 0.07

Заключение

Этот инструмент показывает нам в виде полосы прогресс циклов или программы в целом в более наглядной форме.

С первого взгляда мы можем получить представление о текущем прогрессе и о том, много или мало осталось до завершения цикла.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *