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

Как (с перерывами) пропускать определенные ячейки при работе с IPython ноутбуком?

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

Однако иногда я бы хотел пропустить некоторые из ячеек, которые не влияют на последующие ячейки (например, они могут содержать ветвь анализа, которая завершена) и могут занять очень много времени. Эти ячейки могут быть разбросаны по всему ноутбуку, так что что-то вроде "Run All Below" не поможет.

Есть ли способ достичь этого?

В идеале эти ячейки могут быть помечены некоторыми специальными флагами, так что они могут быть "Run" вручную, но будут пропускаться, когда "Запустить все".

ИЗМЕНИТЬ

%%cache (расширение ipycache), как предложено @Jakob, решает проблему в некоторой степени.

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

Как обход, поместите %%cache folder/unique_identifier в начало ячейки. Код будет выполнен только один раз, и никакие переменные не будут загружены при повторном запуске, если вы не удалите файл unique_identifier.

К сожалению, все выходные результаты теряются при повторном запуске с %%cache...

EDIT II (14 октября 2013 г.)

Мастер-версия ipython + ipycache теперь разжигает (и снова отображает) вывод кодека.

Для богатых выходных данных дисплея, включая Latex, HTML (pandas вывод DataFrame), не забудьте использовать метод IPython display(), например, display(Latex(r'$\alpha_1$'))

4b9b3361

Ответ 1

В настоящее время такой функции нет в ноутбуке IPython. Тем не менее, есть некоторые возможности сделать вашу жизнь проще, например:

  • используйте %store или, может быть, лучше %%cache magic (extension) для хранения результатов этих элементов с перерывами, поэтому их не нужно пересчитывать (см. https://github.com/rossant/ipycache)

  • добавьте if==0: до того, что ячейки, которые вы не хотите выполнять

  • преобразовать эти ячейки в необработанные ячейки (но вы потеряете уже сохраненный вывод!)

(см. обсуждение https://github.com/ipython/ipython/issues/2125)

Якоба

Ответ 2

Хотя это не совсем то, что вы, похоже, ищете, если вы хотите полностью опустить выполнение ячейки (где кешированные результаты не загружены), вы можете добавить следующий хак в начале ячейки ( если вы используете ОС на основе unix):

%%script false