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

Если вы являетесь пользователем Jupyter Notebook, должны были быть сценарии, когда для конкретной ячейки требовалось много времени для завершения выполнения. Это особенно часто встречается во время обучения модели в машинном обучении, оптимизации гиперпараметров или даже при выполнении длительных вычислений и т. Д. Если да, то уведомление браузера, которое проинформирует вас о завершении процесса, может оказаться очень кстати. Таким образом, вы сможете перейти на другие вкладки и вернуться к эксперименту с машинным обучением только после того, как получите уведомление о завершении. Что ж, оказывается, что есть расширение Jupyter, которое делает именно это и очень удачно названо Notify. В этой статье мы увидим, как включить уведомления как в Jupyter Notebook, так и в Jupyter Lab с помощью notify.

Уведомление: волшебство Jupyter для уведомлений браузера о завершении ячейки

Уведомление - это расширение Jupyter Notebook, которое уведомляет пользователя о завершении выполнения длительной ячейки. Это делается через уведомление браузера. На данный момент уведомление поддерживается в Chrome (версия: 58.0.3029) и Firefox (версия: 53.0.3).

Давайте теперь посмотрим, как мы можем установить пакет и использовать его.

Установка

Установка может быть произведена через pip

pip install jupyternotify

или через источник как:

git clone [email protected]:ShopRunner/jupyter-notify.git
cd jupyter-notify/
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
jupyter notebook

Включение уведомлений в Jupyter Notebook

Во-первых, мы рассмотрим, как мы можем включить уведомления в Jupyter Notebooks. Введите следующий текст в первую ячейку записной книжки:

%load_ext jupyternotify

Когда вы запускаете эту ячейку в первый раз, ваш браузер попросит вас разрешить уведомления в записной книжке. Вам следует нажать «Да». Теперь все готово. Здесь я покажу вам небольшой фрагмент кода, который с помощью функции sleep() function. This приостанавливает (ожидает) выполнение текущего потока на заданное количество секунд.

%%notify
import time
time.sleep(10)
print('Finished!')

Выполнив указанную выше ячейку, вы получите следующее уведомление в своем браузере:

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

Включение уведомлений в Jupyter Lab

Хотя в настоящее время нет официальной поддержки Jupyter Lab, я нашел обходной путь. Судя по всему, пользователь отправил запрос на перенос с решением, но он еще не был объединен. Однако решение работает без сбоев.

Вставьте следующее в ячейку Jupyter Lab, а затем код, который вы хотите запустить:

!pip uninstall jupyternotify -y
!pip install git+https://github.com/cphyc/jupyter-notify.git
%reload_ext jupyternotify

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

%%notify
import time
time.sleep(5)

Настройка сообщения уведомления

Если вы хотите получить более интересное сообщение с уведомлением, код можно легко настроить для этого.

%%notify -m "Congrats.The process has finished"
import time
time.sleep(3)

Также доступно множество других опций, например, запуск уведомления в середине ячейки или автоматический запуск уведомления через определенное время. Я настоятельно рекомендую вам заглянуть в репозиторий GitHub пакета для получения подробной информации.

Заключение

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