如何定義一個簡單的細胞魔法,只需執行該細胞就好像%%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看看是否有任何鉤子我可以重用(東西,只會執行單元格)。我沒有找到,但也許我看起來不夠努力。
還有其他想法嗎?