2013-10-11 11 views
20

以前に定義された変数にアクセスして作業を続けるためには、通常、ノートブックを再オープンするときに(ほとんどの部分)ノートブックを再実行する必要があります。IPythonノートブックを実行しているときに、(断続的に)特定のセルをスキップする方法はありますか?

しかし、時には後続のセルに影響を与えないセル(たとえば、解析の分岐を構成する可能性があります)をスキップして、実行に非常に時間がかかることがあります。これらのセルはノートブック全体に散らばっているので、「Run All Below」のようなものはあまり役に立たないでしょう。

これを達成する方法はありますか?

理想的には、これらのセルには特別なフラグが付いているため、手動で「実行」することができますが、「すべて実行」をスキップすることができます。 @Jakobによって示唆されるよう

EDIT

%%cache(ipycache拡張)がある程度まで問題を解決します。

実際には、再実行したときに大きな変数(後続セルには必要ない可能性があります)をロードする必要はなく、保存された出力のみが解析結果としてロードされます。

回避策として、%%cache folder/unique_identifierをセルの先頭に挿入します。 unique_identifierファイルを削除しない限り、コードは一度だけ実行され、再実行時に変数はロードされません。 %%cacheを再実行したときに、すべての出力結果が失われた不幸な

、...

EDIT II(2013年10月14日)

のマスターバージョンipython + ipycacheコーデックの出力を漬けて(そして再表示する)。ラテックス、HTML(パンダのデータフレームの出力)を含む豊富なディスプレイ出力の場合

、IPythonのディスプレイ()メソッドを使用することを覚えて、例えば、display(Latex(r'$\alpha_1$'))

+0

あなたは出力を再表示する必要がない場合は、することができます明確私のここでやったような自分のスキップ魔法:http://stackoverflow.com/a/43584169/4098821 – Robbe

答えて

17

は現在、そのような機能はありませんIPythonのノートブックに含まれています。 はそれにもかかわらず、のように、あなたの人生を容易にするため、いくつかの可能性があります。

  • は、これらの断続的に細胞の結果を格納する%storeまたは多分より良い%%cacheマジック(拡張子)を使用するので、彼らはする必要はありませんあなたは

  • を実行したくない細胞が生細胞へのこれらの細胞を変換する(ただし、すでに格納された出力を失うことになる前if==0:を追加(https://github.com/rossant/ipycacheを参照)

  • 再計算すること!これは、あなたが完全にセルの実行を(省略したい場合は、探しているように見える正確に何ではないですが)

https://github.com/ipython/ipython/issues/2125での議論)

ヤコブ

+1

ipycacheの拡張機能についてよく知っていて、これは私がやっているのと同じように機能します。 '%% cache'マジックは" Run All "時の特殊フラグとして効果的です。手動再実行には単にキャッシュファイルの削除が必要です。ブリリアント!ありがとう、ヤコブ〜 – herrlich10

5

を見ますキャッシュされた結果がロードされていない)、あなたは()UNIXベースのOSを使用していると仮定すると、セルの先頭に以下のハックを追加することができます。

%%script false 
+1

誰でもWindowsでこれを行う方法を知っていますか? – royco

+0

@roycoこれはウィンドウ上でも動作します –