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

Окончательный вывод должен сообщить мне текущий прогресс, текущее время выполнения и ожидаемое время выполнения, как показано на первом изображении:

Хотя, возможно, существуют более привлекательные решения с использованием виджетов IPython, следующий метод является самым простым, который я нашел для достижения этой цели. Раньше я имел обыкновение просто печатать текущий прогресс цикла, но это означает, что у нас будет длинный список для каждого этапа цикла, как показано ниже.

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

1) Импортируйте функцию «clear_output» из IPython.display.

2) В конце каждого цикла вывести текущий прогресс

3) Удалите текущий прогресс в начале следующего шага цикла.

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

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

Надеюсь, вы найдете это интересным и полезным, дайте мне знать, если у вас возникнут какие-либо вопросы.

Спасибо

Фил