以前に定義した変数にアクセスして作業を続けるために、通常、ノートブックを開くときに(ほとんどの部分)を再実行する必要があります。
ただし、後続のセルに影響を及ぼさず(実行中の分析のブランチを構成する場合がある)、実行に非常に長い時間がかかる可能性がある一部のセルをスキップしたい場合があります。これらのセルはノートブック全体に散らばっている可能性があるため、「下にすべて実行」のようなものはあまり役に立ちません。
これを達成する方法はありますか?
理想的には、これらのセルにいくつかの特別なフラグを付けて、手動で「実行」することはできても、「すべて実行」するとスキップされるようにすることができます。
[〜#〜]編集[〜#〜]
@Jakobによって提案された_%%cache
_(ipycache拡張機能)は、問題をある程度解決します。
実際、再実行するときに変数をロードする必要すらありません(大きい可能性がありますが、後続のセルには不要です)。分析結果として保存される出力のみが重要です。
回避策として、_%%cache folder/unique_identifier
_をセルの先頭に配置します。コードは1回だけ実行され、unique_identifierファイルを削除しない限り、再実行時に変数は読み込まれません。
残念ながら、_%%cache
_...で再実行すると、すべての出力結果が失われます.
編集II(2013年10月14日)
Ipython + ipycacheのマスターバージョンは、コードセルの出力も同様にピクル(および再表示)します。
Latex、HTML(pandas DataFrame出力)を含むリッチディスプレイ出力の場合、IPythonのdisplay()メソッドを使用することを忘れないでください。例:display(Latex(r'$\alpha_1$'))
現在、IPython Notebookにはそのような機能は含まれていません。それにもかかわらず、あなたの人生を楽にするいくつかの可能性があります、例えば:
%store
を使用するか、%%cache
マジック(拡張)を使用して、これらのセルの結果を断続的に格納します。これにより、セルを再計算する必要がなくなります( https:// github。 com/rossant/ipycache )
実行したくないセルの前にif==0:
を追加します
これらのセルを生のセルに変換します(ただし、すでに保存されている出力は失われます!)
( https://github.com/ipython/ipython/issues/2125 での議論を参照)
ヤコブ
これは正確にあなたが探しているように見えるものではありませんが、セルの実行を完全に省略したい場合(キャッシュされた結果がロードされない場合)は、セルの先頭に次のハックを追加できます( UNIXベースのOSを使用):
%%script false
またはバリアント(2020年の初めの時点で機能-説明は こちら を参照):
%%script false --no-raise-error
キャッシュされた結果がロードされると予想されない場合、Freeze
nbextensionがこの目的に非常に役立ちます。
非公式ですが、これらのノートブック拡張機能を初めて使用する場合は、ぜひお試しください。
延長機械を取り付けるには、
$ pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install
Freeze
拡張機能を有効にするには、jupyter notebook
を起動して新しいノートブックを開き、メニューからEdit
> nbextensions config
を選択して、Freeze
を確認します。
%%script false
ソリューションは2019年中に機能しなくなりました。
他に利用可能な回避策があります。これらは、何も期待しないように指示するときに引数を無視するプログラムに基づいています。簡単な例をいくつか示します。
Perl:
%%Perl -e0
for i in range(10): print(i)
ここで実行しています:Perl -e '0' cellcontents
より記憶に残るバージョン:
%%Perl -eat
for i in range(10): print(i)
ここで実行しています:Perl -e 'at' cellcontents
バッシュ:
%%bash -c :
for i in range(10): print(i)
':'はbashのnoopなので、実行しています:bash -c : cellcontents
私は外部マジック実装コードを見ていませんが、「cellcontents」が引数として渡され、誤ってShellによって解釈されないことを確信しています。それらの中に誤っていくつかの悪いコードを挿入します。しかし、それを保証することはできません。
ここでサポートされているプログラムを見ると、他のクリエイティブなソリューションを思い付くことができると思います: https://ipython.readthedocs.io/en/stable/interactive/magics.html#cell-magics =