Запуск некоторых задач в ноутбуке IPython в автономном режиме
Возможно ли запустить несколько длинных задач в IPython Notebook, закрыть браузер, а затем через некоторое время открыть его снова и показать результаты этих задач?
Скажем, задача такая:
def f():
import time
time.sleep(100)
with open("result.txt", "w") as fh:
fh.write("Done.")
Если я запускаю задачу нормально и закрываю браузер до завершения, я открываю его, я не вижу 'result.txt'
.
Если я запустил его с помощью %px
магии или параллельного исполнения - снова нет результата, если я закрою браузер до завершения.
Доступны любые расширения или хаки? Или я что-то упускаю?
ОБНОВЛЕНИЕ 1:
Несмотря на то, что поддержка управления фоновыми заданиями в IPython, фоновые задания становятся устаревшими после отключения браузера.
Единственное, что я мог придумать, это выпустить %connect_info
перед закрытием браузера, а затем подключиться с экрана терминала с помощью
ipython console --existing <ID>.json
и выполняйте мои задания оттуда.
ОБНОВЛЕНИЕ 2:
Еще более полезный взлом - это комбинация ipython console
и управления заданиями. То есть Я открываю консоль и присоединяюсь к тому же сеансу при запуске фонового задания в браузере, а затем я могу закрыть его, пока работа не будет завершена.
ОБНОВЛЕНИЕ 3:
он работает с версии iPython 1.0dev без хаков. вы просто запускаете то, что хотите, закройте браузер и он все еще работает.
Ответы
Ответ 1
Обычно я использую экран командной строки linux, который открывает другую оболочку, которая может работать в фоновом режиме.
Например, когда вы впервые вводите свою оболочку, вы вводите "экран". Затем он дает вам новый терминал. Запустите ipython с указанной выше командой. После его запуска на клавиатуре нажмите CTRL + A CTRL + D. Затем программа запускается в фоновом режиме, и вы можете закрыть терминал. Если вы хотите вернуться к нему, введите "screen -r" в командной строке.
Ответ 2
Я не знаю, является ли это новым в IPython 1.0, но в моем ноутбуке IPython, если я вызываю вашу функцию f()
и закрываю браузер, ядро работает в фоновом режиме и через некоторое время (я изменил to time.sleep(10)
) Я вижу созданный файл results.txt
. Я не думаю, что ядро, которое вы обычно запускаете в консоли, останавливается при закрытии окна браузера. Дайте мне знать, если я ошибаюсь.