2015-10-03 47 views
0

如何定義一個簡單的細胞魔法,只需執行該細胞就好像%%mymagic不在那裏一樣?IPython筆記本:定義一個虛擬細胞魔法,像往常一樣簡單地運行細胞

上下文是我們正在使用精彩的IPython parallel框架。在一些地方,我們也使用其定義的%%px魔法。但有時候我們想運行沒有集羣的同一檯筆記本電腦(僅限本地)。在這種情況下,%%px未定義,我將不得不將其註釋掉。相反,在這種情況下,我想重新定義%%px使:

  • %%px:將是一個空操作。

  • %%px --local:只是運行細胞,沒有其他副作用。

另外,所有%%px(與--local與否)可能只是運行的細胞,如果這是更簡單。

另一種方法是創建一個虛擬的客戶端,即具有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(細胞)