उन्नत पायथन विकास पाठ्यक्रम
अध्याय
>
स्तर

सीरियलाइज़ेशन-मॉड्यूल्स
मार्शल और पिकल मॉड्यूल

उद्देश्य

सेवा स्टेशन पर जाएँ और यह सुनिश्चित करें कि डेटा को ठीक से संग्रहीत किया गया है, JSON मॉड्यूल का उपयोग करके फाइलों को स्वरूपित करें।

रास्ते में आगे बढ़ते हुए, हम पाते हैं कि कुछ स्टेशन विकसित होने वाली जमीन के पानी वितरण और मृदा की गुणवत्ता की निगरानी कर रहे हैं, जो भविष्य की फसल के लिए तैयार की जा रही है। डेटा को प्रोसेस करने के लिए, इसे सीरियलाइज़ करना प्रभावी है। जबकि Json का उपयोग एक सामान्यीकृत समाधान के रूप में प्रभावी हो सकता है, कुछ python-विशिष्ट सीरियलाइज़ेशन विधियाँ भी हैं, जिनमें Marshal और Pickle मॉड्यूल शामिल हैं। Marshal मॉड्यूल तेज सीरियलाइज़ेशन/डिसिरियलाइज़ेशन के लिए डिज़ाइन किया गया है, जो डेटा को बाइनरी में परिवर्तित कर देता है, सरल डेटा ट्रांसफर के लिए आदर्श है। Pickle मॉड्यूल धीमा है लेकिन इसे अधिक जटिल डेटा संरचनाओं को प्रोसेस करने के लिए डिज़ाइन किया गया है और यह काफी लचीला है, बड़े या प्राथमिकता वाले डेटा संरचनाओं के लिए आदर्श है।

Marshal और Pickle मॉड्यूल का उपयोग करने के लिए, उनके फंक्शन्स को इस प्रकार आयात करें: import marshal और import pickle। हमारे प्रयोजनों के लिए, हम निम्नलिखित फंक्शन्स का उपयोग करेंगे:

  • marshal.dumps(): डेटा को बाइनरी प्रारूप में सीरियलाइज़ करता है, जो python में गति के लिए डिज़ाइन किया गया है। एक आर्गुमेंट लेता है, जो कि वह डेटा है जिसे आप सीरियलाइज़ करना चाहते हैं, और यह बुनियादी डेटा प्रकारों तक सीमित रहता है।
  • marshal.loads(): बाइनरी डेटा को python द्वारा पढ़े जाने योग्य डेटा प्रकारों में डिसिरियलाइज़ करता है, अपनी क्षमताओं में सीमित लेकिन तेज निष्पादन वाला। एक आर्गुमेंट लेता है, जो कि डिसिरियलाइज़ करने के लिए डेटा है।
  • pickle.DEFAULT_PROTOCOL: जाँच करता है कि आपके Python संस्करण में Pickle सीरियलाइज़ेशन के लिए डिफ़ॉल्ट प्रोटोकॉल संस्करण क्या है। प्रोटोकॉल इस बात को प्रभावित करते हैं कि डेटा को कैसे सीरियलाइज़ किया जाता है।
  • pickle.HIGHEST_PROTOCOL: जाँच करता है कि आपके Python संस्करण में Pickle सीरियलाइज़ेशन के लिए उपलब्ध सबसे उच्च प्रोटोकॉल संस्करण क्या है। प्रोटोकॉल इस बात को प्रभावित करते हैं कि डेटा को कैसे सीरियलाइज़ किया जाता है।
  • pickle.dumps(): प्रोटोकॉल के अनुसार जटिल python डेटा संरचनाओं को बाइनरी प्रारूप में सीरियलाइज़ करता है। दो आर्गुमेंट लेता है, वह डेटा जिसे आप सीरियलाइज़ करना चाहते हैं और सीरियलाइज़ करते समय उपयोग करने के लिए प्रोटोकॉल संस्करण।
  • pickle.loads(): बाइनरी डेटा को python द्वारा पढ़े जाने योग्य डेटा प्रकारों में डिसिरियलाइज़ करता है, python ऑब्जेक्ट्स के लिए शक्तिशाली। एक आर्गुमेंट लेता है, वह डेटा जिसे आप डिसिरियलाइज़ करना चाहते हैं।

इन मॉड्यूल्स और फंक्शन्स के अतिरिक्त, हम एक फॉर्मेटिंग मॉड्यूल का भी उपयोग करेंगे जिसका नाम pformat है, जिसे हम from pprint import pformat का उपयोग करके आयात करेंगे। यह हमें pformat() फंक्शन उपयोग करने की अनुमति देता है, जिसे डिक्शनरी जैसी डेटा संरचनाओं को फॉर्मेट करने के लिए इस्तेमाल किया जा सकता है ताकि हम जानकारी को स्पष्ट रूप से प्रदर्शित कर सकें।

शुरू करने के लिए, छोटे मॉनिटरिंग स्टेशन के अंदर लाइट X मार्क तक चलें और कंप्यूटर टर्मिनल का सामना करें। स्टेशन पास के इलाके की पानी का दबाव और मृदा की स्थितियों की निगरानी करता है, जिस पर फसल लगाई जा रही है। एक कांस्टेंट है जिसका नाम reading है, जिसमें स्टेशन द्वारा एकत्रित python डेटा होता है।

एक वेरिएबल बनाएं जिसका नाम data हो और marshal.dumps() फंक्शन के वैल्यू को संग्रहीत करें, जिसमें reading को आर्गुमेंट के रूप में सेट किया गया हो। इस प्रकार: data = marshal.dumps(reading)। प्री-लिखित display() फंक्शन के साथ data वेरिएबल का उपयोग करके सीरियलाइज़्ड वेरिएबल डेटा देखें।

स्टेशन से बाहर निकलें और गोल्ड X मार्क की ओर जाएँ, open() फंक्शन का उपयोग करके दरवाज़ा खोलें और ऑफिस में प्रवेश प्राप्त करें। टर्मिनल के सामने लाइट X मार्क तक चलें, और आपने अभी जो डेटा सीरियलाइज़ किया है उसे डिसिरियलाइज़ करें। एक वेरिएबल बनाएं जिसका नाम output हो और marshal.loads() का वैल्यू उसमें संग्रहीत करें, जिसमें पिछले data वेरिएबल को आर्गुमेंट के रूप में सेट करें। प्री-लिखित write() फंक्शन का उपयोग करें और output को आर्गुमेंट के रूप में जोड़ें ताकि आप मॉनिटरिंग स्टेशन से प्राप्त सीरियलाइज़्ड डेटा तक पहुंच सकें।

ऑफिस में ब्लू कालीन पर स्थित लाइट X मार्क तक चलें, टर्मिनल पर हम प्रोटोकॉल्स की पुष्टि करेंगे ताकि यह निर्धारित किया जा सके कि डेटा प्रोसेस करते समय pickle मॉड्यूल किस प्रकार का सीरियलाइज़ेशन उपयोग करेगा। प्री-लिखित write() फंक्शन में, आर्गुमेंट्स को pickle.DEFAULT_PROTOCOL और pickle.HIGHEST_PROTOCOL के रूप में सेट करें। यह जांचेगा कि वर्तमान सीरियलाइज़ेशन प्रोटोकॉल क्या है और इस समय उपलब्ध नवीनतम सीरियलाइज़ेशन प्रोटोकॉल कौन सा है।

ब्लू कालीन पर स्थित डार्क X मार्क तक आगे बढ़ें, अब जब हमने प्रोटोकॉल्स की पुष्टि कर ली है, तो हम संग्रहीत डेटा की पुष्टि कर सकते हैं। महीनों के दौरान डेटा एकत्रित किया गया है और इसे samples नामक कांस्टेंट में संग्रहीत किया गया है। तीन वेरिएबल बनाएं: sereal_0, sereal_2 और sereal_5। हम इनका उपयोग सीरियलाइज़ेशन के लिए उपलब्ध तीन प्रोटोकॉल्स की पुष्टि करने के लिए करेंगे। प्रोटोकॉल 0 ASCII स्वरूप में पठनीय है, कम कुशल है, प्रोटोकॉल 2 अधिक कुशल बाइनरी प्रारूप है और प्रोटोकॉल 5 नवीनतम है जिसमें सबसे जटिल विशेषताएँ जोड़ी गई हैं।

हम pickle.dumps() का उपयोग कर के उसका वैल्यू संग्रहीत करेंगे और आर्गुमेंट्स के रूप में samples कांस्टेंट और उस वेरिएबल नाम पर आधारित protocol नंबर सेट करेंगे। उदाहरण के लिए, sereal_0 के लिए हम protocol को 0 सेट करेंगे, इस प्रकार: sereal_0 = pickle.dumps(samples, protocol=0)। प्री-लिखित display() फंक्शन के साथ sereal_0, sereal_2 और sereal_5 का उपयोग करें ताकि आप प्रत्येक प्रोटोकॉल के लिए सीरियलाइज़ेशन में अंतर की पुष्टि कर सकें।

रेड कालीन पर स्थित लाइट X मार्क तक चलें और टर्मिनल का सामना करें, output वेरिएबल को ओवरराइट करें और उसमें pickle.loads() का वैल्यू संग्रहीत करें, और आर्गुमेंट के रूप में sereal_5 सेट करें ताकि अब तक एकत्रित किए गए सैंपल डेटा को डिसिरियलाइज़ किया जा सके। display() फंक्शन का उपयोग करें और pformat() फंक्शन को output वेरिएबल के साथ जोड़ें ताकि डेटा को देखा जा सके। इस प्रकार: await player.display(pformat(output))। टर्मिनल में प्रदर्शित प्रत्येक माह की रेटिंग्स का ध्यान रखें ताकि बाद में उन्हें चार्ट किया जा सके।

रेड कालीन पर स्थित डार्क X मार्क तक चलें और डेस्क का सामना करें, प्री-लिखित write() फंक्शन में, प्रत्येक माह की रेटिंग्स जोड़ें जो आपने पहले टर्मिनल में देखी थीं। उन्हें स्ट्रिंग्स के रूप में "" मार्क्स के साथ सही क्रम में जोड़ें, जैसा कि फंक्शन में वर्णित है, ताकि स्तर को पूरा किया जा सके।

कोड बुक