2016-03-11 12 views
7

मेरे पास दो अलग-अलग जुपीटर नोटबुक हैं, जो एक ही सर्वर पर चल रहे हैं। मैं क्या करना चाहता हूं कि अन्य नोटबुक के माध्यम से एक नोटबुक के चर के कुछ (केवल उनमें से कुछ) तक पहुंचें (मुझे तुलना करना होगा कि एल्गोरिदम के दो अलग-अलग संस्करण समान परिणाम देते हैं)। क्या इसे करने का कोई तरीका है?विभिन्न ज्यूपिटर नोटबुक के बीच साझा चर

धन्यवाद

उत्तर

5

आप केवल कुछ quick'n गंदा, आप डेटा को लगातार बनाने की pickle मॉड्यूल का उपयोग कर सकते हैं (एक फ़ाइल में सहेजें) और फिर इसे अपने अन्य नोटबुक द्वारा उठाया है की जरूरत है। उदाहरण के लिए:

import pickle 

a = ['test value','test value 2','test value 3'] 

# Choose a file name 
file_name = "sharedfile" 

# Open the file for writing 
with open(file_name,'wb') as my_file_obj: 
    pickle.dump(a,my_file_obj) 

# The file you have just saved can be opened in a different session 
# (or iPython notebook) and the contents will be preserved. 

# Now select the (same) file to open (e.g. in another notebook) 
file_name = "sharedfile" 
# Open the file for reading 
file_object = open(file_Name,'r') 
# load the object from the file into var b 
b = pickle.load(file_object) 

print(b) 
>>> ['test value','test value 2','test value 3'] 
3

2 जुपीटर नोटबुक के बीच, आप% store कमांड का उपयोग कर सकते हैं।

पहले jupyter नोटबुक में:

data = 'string or data-table to pass' 
%store data 
del data 

दूसरा jupyter नोटबुक में:

%store -r data 
data 

आप here में अधिक जानकारी प्राप्त कर सकते हैं।

1

आप एक ही magic commands का उपयोग this.The Cell magic करने के लिए कर सकते हैं: %%cache IPython नोटबुक में लगातार अचार फ़ाइल में कैश परिणाम और लंबे समय से स्थायी संगणना के आउटपुट के लिए इस्तेमाल किया जा सकता है। उपयोगी जब नोटबुक में कुछ कंप्यूटेशंस लंबे होते हैं और आप परिणामों को आसानी से फ़ाइल में सहेजना चाहते हैं।

अपनी नोटबुक में इसका उपयोग करने के लिए, आपको पहले मॉड्यूल ipycache मॉड्यूल स्थापित करने की आवश्यकता है क्योंकि यह सेल जादू कमांड अंतर्निहित जादू कमांड नहीं है। , तब

%load_ext ipycache 

के साथ एक सेल बनाने के लिए::

तो अपनी नोटबुक में मॉड्यूल लोड करते हैं तो आप इस सेल पहली बार निष्पादित

%%cache mycache.pkl var1 var2 
var1 = 1 # you can put any code you want at there, 
var2 = 2 # just make sure this cell is not empty. 

, कोड निष्पादित किया जाता है, और चर var1 और var2 आउटपुट के साथ वर्तमान निर्देशिका में mycache.pkl में सहेजे गए हैं। रिच डिस्प्ले आउटपुट केवल तभी सहेजे जाते हैं जब आप आईपीथॉन के विकास संस्करण का उपयोग करते हैं। जब आप इस सेल को फिर से निष्पादित करते हैं, तो कोड छोड़ा जाता है, चर से फ़ाइल को लोड किया जाता है और नामस्थान में इंजेक्शन दिया जाता है, और आउटपुट को नोटबुक में बहाल किया जाता है।

वैकल्पिक रूप से का उपयोग mycache.pkl के बजाय करें, जहां फ़ाइल_नाम एक चर है जो कैशिंग के लिए उपयोग की जाने वाली फ़ाइल का पथ धारण करता है।

सेल के निष्पादन को बल देने और फ़ाइल को ओवरराइट करने के लिए --force या -f विकल्प का उपयोग करें।

सेल के निष्पादन को रोकने के लिए --read या -r विकल्प का उपयोग करें और हमेशा कैश से चर लोड करें। फ़ाइल मौजूद नहीं है तो एक अपवाद उठाया जाता है।

रेफरी: ipycache की GitHub भंडार और example notebook

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