2015-10-03 4 views
0

Как я могу определить простую клеточную магию, которая просто выполняет ячейку, как если бы %%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, чтобы узнать, есть ли какой-либо крючок, который я мог бы повторно использовать (что-то, что просто выполнило бы ячейку). Я не нашел, но, возможно, я не выглядел достаточно тяжело.

Любая другая идея?

ответ

0

Я думаю, что соответствующая команда

self.shell.run_cell (клетка)