2013-10-11 46 views
20

我通常必須重新運行(大部分零件)時重新打開它,以獲得訪問以前定義的變量和繼續工作的筆記本電腦。如何(間斷)運行IPython的筆記本時跳過某些細胞?

但是,有時我想跳過一些細胞,有沒有影響到後續的細胞(例如,他們可能包括已完成分析的一個分支),可能需要很長的時間來運行的。這些細胞可以分散在整個筆記本中,所以像「Run All Below」這樣的東西沒有多大幫助。

有沒有辦法做到這一點?

理想的情況下,這些細胞可以標記有一些特殊的標誌,讓他們能「運行」手動,但會被跳過時,「運行全部」。

EDIT

%%cache(ipycache擴展)由@Jakob所建議的解決問題在一定程度上。

其實,我甚至不需要加載任何變量(可以是大的,但不必要的下列細胞)重新運行,只有存儲輸出事項分析結果時。

作爲變通,把%%cache folder/unique_identifier到小區的開始。代碼將只執行一次,除非刪除unique_identifier文件,否則在重新運行時不會加載變量。

不幸的是,與%%cache重新運行所有的輸出結果輸了...

編輯II(2013年10月14日)

的主版本的IPython + ipycache現在泡菜(並重新顯示)代碼單元輸出。

對於富顯示輸出,包括乳膠,HTML(熊貓數據幀輸出),請記住使用IPython的的顯示()方法,例如,display(Latex(r'$\alpha_1$'))

+0

如果您不需要重新顯示輸出,可以defin e你自己的跳過魔術就像我在這裏:http://stackoverflow.com/a/43584169/4098821 – Robbe

回答

17

目前,還包括在IPython的筆記本沒有這樣的功能。 不過,也有一些可能性,使您的生活更輕鬆,如:

  • 使用%store也許更好的%%cache魔(擴展名)來存儲這些間歇性細胞的結果,所以他們不必重新計算(見https://github.com/rossant/ipycache

  • 添加細胞前if==0:你不想執行

  • 這些細胞轉化爲原始細胞(但你將失去已存儲的輸出!)

(見https://github.com/ipython/ipython/issues/2125

雅各布

+1

很高興知道ipycache擴展,其功能類似於我現在(手動)做的,但只有更好! '%% cache'魔術在「全部運行」時有效地用作特殊標誌,手動重新運行只需要緩存文件刪除。輝煌!謝謝,Jakob〜 – herrlich10

5

討論)雖然這不是你似乎正是要尋找的,如果你想完全忽略單元的執行(其中沒有緩存的結果加載),你可以在一個單元格的開頭添加下面的技巧(假設你使用的是基於UNIX的操作系統):

%%script false 
+1

任何人都知道如何在Windows上做到這一點? – royco

+0

@royco它也適用於Windows –