Как я могу определить простую клеточную магию, которая просто выполняет ячейку, как если бы %%mymagic
не был там?IPython notebook: определить манекен для манекенов, который просто запускает ячейку, как обычно.
Контекст заключается в том, что мы используем замечательный каркас IPython parallel. В некоторых местах мы также используем его заданную магию %%px
. Но иногда мы хотели бы запустить один и тот же ноутбук без кластера (только локальный). В этом случае %%px
не определен, и я должен был бы прокомментировать его. Вместо этого, в этом случае я хотел бы пересмотреть %%px
так, что:
%%px
: не было бы не оп.%%px --local
: просто работает камера, нет другого побочного эффекта.
В качестве альтернативы, все %%px
(с --local
или нет) может просто запустить ячейку, если это проще.
Другим подходом было бы создание клиента ipyparallel, который является поддельным, то есть с 0 узлами (но все равно будет работать правильно, например, в отношении %%px --local
). Но это будет по другому вопросу.
Вещи, которые я пробовал:
%alias_magic px time
(в конце концов, я не волнует, если ячейка приурочена). К сожалению,%%time
не принимает аргументов и дросселей на--local
.Определите свою собственную «не-оп» магию:
if USE_CLIENT: pass else: # temporarily define %%px cell magic from IPython import get_ipython def px(line, cell): """Do nothing""" pass get_ipython().register_magic_function(px, 'cell')
но это удается немного слишком хорошо на не делая действительно ничего (т.е. клетку, не выполняется).
Загляните в IPython/core/magics/execution.py, чтобы узнать, есть ли какой-либо крючок, который я мог бы повторно использовать (что-то, что просто выполнило бы ячейку). Я не нашел, но, возможно, я не выглядел достаточно тяжело.
Любая другая идея?