কীভাবে পরবর্তীতে Jupyter (IPython) নোটবুক সেশনটি আচার বা সঞ্চয় করবেন


104

ধরা যাক আমি প্রচুর সময় ব্যয়কারী গণনা সম্পন্ন করে জুপিটার / আইপাইথন নোটবুকে একটি বৃহত ডেটা বিশ্লেষণ করছি। তারপরে, কোনও কারণে, আমাকে জ্যুপিটার স্থানীয় সার্ভারটি বন্ধ করতে হবে, তবে আমি আবার সমস্ত সময় গ্রহীতা গণনা না করেই বিশ্লেষণ করে আবার ফিরে যেতে চাই।


আমি চাই কি পছন্দ করতে প্রেম হয় pickleঅথবা পুরো Jupyter অধিবেশন সংরক্ষণ (সমস্ত পান্ডাস dataframes, np.arrays, ভেরিয়েবল, ...) তাই আমি নিরাপদে বুদ্ধিমান আমি ঠিক একই অবস্থায় আমার অধিবেশন ফিরে আসতে পারেন সার্ভার ডাউন বন্ধ করতে পারে না আগে.

এটি কি প্রযুক্তিগতভাবেও সম্ভব? আমি কি একটি বিল্ট-ইন কার্যকারিতা উপেক্ষা করেছি?


সম্পাদনা: এই উত্তরের উপর ভিত্তি করে একটি %store জাদু রয়েছে যা "লাইটওয়েট আচার" হওয়া উচিত। তবে আপনাকে নিজের মতো করে ভেরিয়েবলগুলি সংরক্ষণ করতে হবে:

#inside a ipython/nb session
foo = "A dummy string"
%store foo
রিয়ার্ফেশনের
%store -r foo জন্য কার্নেল # আরটি পুনরায় আর্ট করা হচ্ছে
print(foo) # "A dummy string"

যা আমি যা চাই তা মোটামুটি কাছাকাছি, তবে এটি ম্যানুয়ালি করা এবং বিভিন্ন সেশনের মধ্যে পার্থক্য করতে অক্ষম হওয়া এটিকে কম দরকারী করে তোলে।


4
এ নিয়ে কোন অগ্রগতি? আমি কেবল লক্ষ্য করেছি যে স্পাইডার আইডিইতে একটি ওয়ার্কস্পেস রয়েছে যা * .mat এ ভেরিয়েবল সংরক্ষণ করতে পারে। তবে এটি নিশ্চিত নয় যে এটি বৃহত্তর নোটবুকের মধ্যে পোর্ট করা যেতে পারে।
cqcn1991

আপনি কি pypi.python.org/pypi/dill বিবেচনা করেছেন ? "ড্রিল এছাড়াও পাইথন ইন্টারপ্রেটার সেশনগুলি সংরক্ষণ করুন এবং লোড করুন" এটি অজগর যদিও, আইপিথন বা কার্নেলের সাথে আর কী জড়িত তা নিশ্চিত নয়
পিকক্ল্বো

উত্তর:


66

আমি মনে করি ডিল আপনার প্রশ্নের উত্তর ভালভাবে দিয়েছে।

pip install dill

একটি নোটবুক সেশন সংরক্ষণ করুন:

import dill
dill.dump_session('notebook_env.db')

একটি নোটবুক সেশন পুনরুদ্ধার করুন:

import dill
dill.load_session('notebook_env.db')

সূত্র


4
জেনারেটর থাকার সময় ব্যর্থ হয় (যখন আমি এটি সম্পর্কে চিন্তা করি তখন কোন ধরণের অর্থ হয়) তবে মনে হয় এটি আমাদের কাছে আশা করা যায় যত কাছাকাছি!
রবিন নেমেথ

4
আমার জন্য দুর্দান্ত কাজ করেছেন কয়েকটি জিনিস মনে রাখবেন: প্রথমে, যদি আপনার কাছে পায়োডবিসি সংযোগের বস্তুগুলি চারদিকে ঝুলে থাকে তবে আপনাকে সেগুলি বন্ধ করে তারপরে সমস্ত কিছু সেট করার দরকার নেই অন্যথায়, আপনি "TypeError: পাইওডবিসি করতে পারবেন না on সংযোগের বিষয়গুলি" ত্রুটি । দ্বিতীয়ত, নোটবুকের স্থিতিতে গ্রাফগুলি অন্তর্ভুক্ত নয় যা আপনার কোড দ্বারা উত্পন্ন হয়েছিল, সুতরাং এগুলি ফিরিয়ে আনতে আপনাকে ঘরগুলি পুনরায় চালু করতে হবে।
মাইকেল জাজেপানিয়াক

তবে এটি কাজ করে না আমি সংরক্ষিত ফাইলটি অন্য মেশিনে ব্যবহার করেছি
জয়া এ

ইনস্টল করা ডিল। আমি কি কমান্ড লাইন থেকে ডিল dill.dump_session ('নোটবুক_env.db') আমদানি করব?
চিজনাড

না, জুপিটার নোটবুক চালানোর সময় আপনার এটি করা দরকার। উভয় ডাম্প_সেশন এবং লোড_অ্যাসিওশন নোটবুকের মাধ্যমে হওয়া উচিত। আপনার লোড_সেশনটি নোটবুকের শুরুতে হতে পারে। এবং ডাম্প_সেশনটি নোটবুকের একেবারে শেষে হতে পারে।
ধাতবলয়ডি

28

(আমি এটিকে প্রকৃত উত্তর হিসাবে প্রস্তাব দেওয়ার চেয়ে মন্তব্য করব, তবে মন্তব্য করার জন্য আমার আরও খ্যাতি দরকার need)

আপনি বেশিরভাগ ডেটা-জাতীয় ভেরিয়েবলগুলি নিয়মতান্ত্রিক উপায়ে সংরক্ষণ করতে পারেন। আমি সাধারণত যা করি তা হ'ল সমস্ত ডেটাফ্রেম, অ্যারে ইত্যাদি প্যান্ডাসে সংরক্ষণ করুন Hএইচডিএফএস স্টোর । নোটবুকের শুরুতে, ঘোষণা করুন

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

এবং তারপরে আপনি যে কোনও নতুন ভেরিয়েবল তৈরি করবেন সেটিকে সংরক্ষণ করুন

backup['var1'] = var1

শেষে, সম্ভবত একটি ভাল ধারণা

backup.close()

সার্ভার বন্ধ করার আগে। পরের বার আপনি নোটবুকটি দিয়ে চালিয়ে যেতে চান:

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

সত্যি কথা বলতে, আমি আইপথন নোটবুক-এ বিল্ট-ইন কার্যকারিতাটিও পছন্দ করতাম। আপনি এইভাবে সবকিছু সংরক্ষণ করতে পারবেন না (যেমন বস্তু, সংযোগ), এবং এত বেশি বয়লারপ্লেট কোড সহ নোটবুকটি সংগঠিত করা শক্ত।


6
এটি একটি খুব আকর্ষণীয় কাজ, কিন্তু আমি আক্ষরিকভাবে এমন সিস্টেমটি বজায় রাখার সাথে সম্পর্কিত ব্যথা অনুভব করতে পারি। টিপটির জন্য ধন্যবাদ :)
রবিন নেমেথ

19

এই প্রশ্নটি সম্পর্কিত: আইপিথন নোটবুকে ক্যাশ করবেন কীভাবে?

পৃথক কক্ষের ফলাফলগুলি সংরক্ষণ করতে, ক্যাশিং যাদুটি কাজে আসে।

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

নোটবুকটি পুনরায় চালু করার সময়, এই ঘরের সামগ্রীগুলি ক্যাশে থেকে লোড করা হয়।

এটি আপনার প্রশ্নের সঠিক উত্তর দিচ্ছে না, তবে সমস্ত দীর্ঘ গণনার ফলাফল দ্রুত পুনরুদ্ধার করা যথেষ্ট হবে। নোটবুকের উপরের রান-অল বাটনটি হিট করার সংমিশ্রণে এটি আমার পক্ষে একটি কার্যক্ষম সমাধান।

ক্যাশে যাদু এখনও একটি সম্পূর্ণ নোটবুকের রাজ্য সংরক্ষণ করতে পারে না । আমার জানা মতে একটি "নোটবুক" আবার চালু করার মতো অন্য কোনও সিস্টেম নেই। এর জন্য পাইথন কার্নেলের সমস্ত ইতিহাস সংরক্ষণ করা দরকার। নোটবুকটি লোড করার পরে এবং কার্নেলের সাথে সংযুক্ত হওয়ার পরে, এই তথ্যটি লোড করা উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.