Подтвердить что ты не робот

Запуск некоторых задач в ноутбуке 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 без хаков. вы просто запускаете то, что хотите, закройте браузер и он все еще работает.

4b9b3361

Ответ 1

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

Например, когда вы впервые вводите свою оболочку, вы вводите "экран". Затем он дает вам новый терминал. Запустите ipython с указанной выше командой. После его запуска на клавиатуре нажмите CTRL + A CTRL + D. Затем программа запускается в фоновом режиме, и вы можете закрыть терминал. Если вы хотите вернуться к нему, введите "screen -r" в командной строке.

Ответ 2

Я не знаю, является ли это новым в IPython 1.0, но в моем ноутбуке IPython, если я вызываю вашу функцию f() и закрываю браузер, ядро ​​работает в фоновом режиме и через некоторое время (я изменил to time.sleep(10)) Я вижу созданный файл results.txt. Я не думаю, что ядро, которое вы обычно запускаете в консоли, останавливается при закрытии окна браузера. Дайте мне знать, если я ошибаюсь.