2015-12-17 13 views
35

Jupiter/Ipythonノートブックで大量のデータ分析をしているとしましょう。それで何らかの理由で私はローカルサーバーJupiterをシャットダウンする必要がありますが、後で分析を行うことに戻り、すべての時間のかかる計算をやり直す必要はありません。後でJupyter(IPython)ノートブックセッションをpickleまたは格納する方法


私は 行うに 愛はpickleまたは全部Jupyterセッション(すべてのパンダのデータフレーム、np.arrays、変数、...)お店ですので、私は無事に私ができる知っているサーバーをシャットダウンすることができたいと思います以前とまったく同じ状態で私のセッションに戻ります。

技術的にも可能ですか?私は見落とされている組み込みの機能はありますか?


EDIT:this回答に基づいて "軽量ピクルス" でなければなりません%storemagicあります。しかし、あなたがそうのように手動で変数を格納する必要があります。

リフレッシュ
にかなり近いです print(foo) # "A dummy string"

ためのカーネル
%store -r foo#rを再起動し、seesionを閉じる

#inside a ipython/nb session
foo = "A dummy string"
%store foo
私は何を望むだろうが、それを手動で行い、異なるセッションを区別することができないようにしなければならないあまり役に立たない。

+1

これに関する進捗状況はありますか?私はSpyder IDEに変数を* .matに保存できるワークスペースがあることに気が付いただけです。しかし、これがJupyter Notebookに移植できるかどうかは分かりません。 – cqcn1991

答えて

14

(私はむしろこれは、実際の答えとして提供するよりも、コメントしたいが、私はコメントすることをより多くの評判を必要としています。)

あなたは体系的な方法で、ほとんどのデータのような変数を格納することができます。私が通常行うことは、すべてのデータフレームや配列などをpandas.HDFStoreに保存することです。ノートブックの開始時に、

backup = pd.HDFStore('backup.h5') 

を宣言して、あなたが彼らに

backup['var1'] = var1 

を作るよう終わりに、新しい変数を格納、前

backup.close() 

を行うには、おそらく良いアイデアサーバーの電源を切る。あなたは、ノートブックを続行したい次の時間:

backup = pd.HDFStore('backup.h5') 
var1 = backup['var1'] 

真実が言われるが、私はあまりにも、ipythonノートブックの組み込み機能を好みます。このようにすべてのもの(オブジェクト、接続など)を保存することはできません。ノートブックを整理したままのコードを整理しておくのは難しいです。

+3

これは非常に興味深い回避策ですが、私は文字通りそのようなシステムを維持することに関連する痛みを感じることができます。先端のおかげでありがとう:) –

6

この質問はに関連している:個々の細胞の結果を保存するにはHow to cache in IPython Notebook?

caching magicに便利です。

%%cache longcalc.pkl var1 var2 var3 
var1 = longcalculation() 
.... 

ノートブックを再実行すると、このセルの内容がキャッシュからロードされます。

これはあなたの質問に正確に答えているわけではありませんが、すべての長い計算の結果が速く回復する場合は十分かもしれません。これは、ノートブックの上にあるすべてのボタンを押すことと組み合わせて、私にとっては実行可能な解決策です。

キャッシュマジックはノートブック全体の状態を保存できません。yet。私の知る限りでは、まだノートブックを再開するシステムはまだありません。これは、Pythonカーネルのすべての履歴を保存する必要があります。ノートブックをロードしてカーネルに接続したら、この情報をロードする必要があります。

関連する問題