Можно ли выводить записанную на бумажной фабрике записную книжку с работающим ядром? - PullRequest
1 голос
/ 02 апреля 2019

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

Я создаю блокноты с помощью функции execute_notebook.

У меня такое ощущение, что это невозможно, потому что во время работы новой записной книжки на моей домашней странице jupyter никогда не появляется надпись «Работает». Возможно ли то, что я прошу, даже с помощью бумажной фабрики, или есть другой способ достижения этого, который можно масштабировать?

Ответы [ 3 ]

0 голосов
/ 25 апреля 2019

Вы можете реализовать это, следуя документам о расширении бумажной фабрики , чтобы реализовать собственный движок, который ссылается на работающее ядро ​​или оставляет ядро ​​после выполнения. Это потребует небольшого количества пользовательского кода, чтобы nbconvert не останавливал ядро ​​и / или не передавал целевое ядро ​​в функцию исполнения papermill. Возможно, но не из коробки.

0 голосов
/ 31 мая 2019

Насколько я знаю, есть несколько вариантов для этого. Бумажная фабрика, позволяющая записывать переменные в записную книжку с использованием papermill.record(), которая устарела; Я верю, что вы можете получить более старую версию и по-прежнему использовать ее.

Другой вариант, который они предлагают, это использовать альбом. Вы можете найти больше об этом здесь .

Вы также можете использовать %store magic: Обмен данными между ноутбуками IPython

Наконец, вы можете просто записывать в простые файлы, используя функциональность менеджера контекста python:

with open('<dir>', 'w') as file:
    file.write(<var_of_choice>)

import json    
with open(<out_path>, "a+") as file:
    json.dump(<var_of_choice>, file)

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

0 голосов
/ 02 апреля 2019

Сохранение звука ядра действительно полезным, и я тоже не смог найти поддержку для этого в Документация Papermill .

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

Однако, похоже, вам не нужно ничего перезапускать в сохраненных записных книжках, чтобы восстановить уже вычисленные переменные, так как вы можете просто использовать papermill.read_notebook, нет?

...