2015-12-17 5 views
35

के लिए जुपीटर (आईपीथन) नोटबुक सत्र को कैसे चुनें या स्टोर करें, मान लीजिए कि मैं जुपीटर/आईपीथन नोटबुक में एक बड़ा डेटा विश्लेषण कर रहा हूं जिसमें बहुत समय लेने वाली गणना होती है। फिर, किसी कारण से, मुझे jupyter स्थानीय सर्वर I को बंद करना होगा, लेकिन मैं बाद में विश्लेषण करने के लिए वापस लौटना चाहूंगा, बिना समय लेने वाली गणनाओं के माध्यम से फिर से जाना।बाद में


क्या मैं प्यार की तरह करने के लिए होगा pickle है या पूरे Jupyter सत्र (सभी पांडा dataframes, np.arrays, चर, ...) की दुकान तो मैं सुरक्षित रूप से जानते हुए भी मैं कर सकते हैं सर्वर को शट डाउन कर सकते हैं पहले के समान स्थिति में मेरे सत्र में वापस आएं।

क्या यह तकनीकी रूप से भी संभव है? क्या एक अंतर्निहित कार्यक्षमता है जिसे मैंने अनदेखा किया है?


संपादित करें:this उत्तर के आधार पर होती है एक %storemagic जो "हल्के अचार" होना चाहिए। हालांकि तुम इतनी तरह मैन्युअल रूप से चर स्टोर करने के लिए है:

#inside a ipython/nb session
foo = "A dummy string"
%store foo
ताज़ा
print(foo) # "A dummy string"

जो काफी करीब है के लिए seesion बंद करने, पुन: प्रारंभ गिरी
%store -r foo # r मैं क्या चाहता हूं, लेकिन इसे मैन्युअल रूप से करने और विभिन्न सत्रों के बीच अंतर करने में असमर्थ होने के कारण यह कम उपयोगी है।

+1

इस पर कोई प्रगति? मैंने केवल देखा है कि स्पाइडर आईडीई में एक वर्कस्पेस है जो चर को * .mat में सहेज सकता है। लेकिन यकीन नहीं है कि यह जुपीटर नोटबुक में पोर्ट किया जा सकता है। – 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 की स्थिति को सहेज नहीं सकता है। मेरे ज्ञान के लिए अभी तक एक "नोटबुक" फिर से शुरू करने के लिए कोई अन्य प्रणाली नहीं है। इसके लिए अजगर कर्नेल के सभी इतिहास को सहेजने की आवश्यकता होगी। नोटबुक लोड करने और कर्नेल से कनेक्ट करने के बाद, यह जानकारी लोड की जानी चाहिए।

संबंधित मुद्दे