2010-01-05 14 views
10

कार्यक्रम सत्रों में जटिल पायथन डेटा संरचनाओं को सहेजने के लिए सर्वोत्तम तकनीक पर सलाह की तलाश में है।प्रोग्राम सत्रों (पिकल, जेसन, एक्सएमएल, डेटाबेस, अन्य) में जटिल पायथन डेटा संरचनाओं को सहेजने का सबसे अच्छा तरीका

यहाँ तकनीक की एक सूची मैं अब तक के साथ आ गया है:

  • अचार/cpickle
  • json
  • jsonpickle
  • एक्सएमएल
  • डेटाबेस (SQLite) की तरह

अचार सबसे आसान और सबसे तेज़ तकनीक है, लेकिन मेरी समझ है कि इस बात की कोई गारंटी नहीं है कि अचार उत्पादन पायथन 2.x/3.x के विभिन्न संस्करणों या पायथन के 32 और 64 बिट कार्यान्वयन में काम करेगा।

जेसन केवल सरल डेटा संरचनाओं के लिए काम करता है। Jsonpickle इसे सही करने लगता है और पाइथन के विभिन्न संस्करणों में काम करने के लिए लिखा जाता है।

एक्सएमएल या डेटाबेस में सीरियलाइजिंग संभव है, लेकिन अतिरिक्त प्रयास का प्रतिनिधित्व करता है क्योंकि हमें खुद को क्रमशः क्रमबद्ध करना होगा।

धन्यवाद, मैल्कम

उत्तर

15

आप अचार के बारे में एक गलत धारणा है: वे अजगर संस्करणों में काम करने के लिए गारंटी है। आपको बस एक प्रोटोकॉल संस्करण चुनना है जो आपके द्वारा की जाने वाली सभी पायथन संस्करणों द्वारा समर्थित है।

आपके द्वारा छोड़ी गई तकनीक मार्शल है, जो पाइथन संस्करणों (और बीटीडब्ल्यू, कैसे .pyc फाइलें लिखी जाती हैं) में काम करने की गारंटी नहीं है।

+0

+1 ... उपयोगी जानकारी! – jldupont

+0

नेड: पिकलिंग और मार्शलिंग के बीच मेरे भ्रम को इंगित करने के लिए धन्यवाद। – Malcolm

2

आप PySyck या pyYAML को देखा है?

+0

मिचोलसन: मैं pYYAML के बारे में भूल गया था।जेएसओएन (जटिल डेटा संरचनाओं के साथ काम नहीं करता) और अचार के बीच एक दिलचस्प समझौता की तरह लग रहा है। क्या आपने jsonpickle प्रोजेक्ट को देखा है। साथ ही बहुत प्रभावशाली। – Malcolm

+0

कोई jsonpickle मेरे लिए नया नहीं था। सूचक के लिए धन्यवाद! – rnicholson

2

"सर्वश्रेष्ठ" के लिए आपके मानदंड क्या हैं?

  • pickle सबसे अजगर संरचनाओं, गहरा नीडिंत वाले भी
  • SQLite डीबीएस आसानी से पूछे जा सकती है, कर सकते हैं (यदि आप एसक्यूएल :)
  • गति/स्मृति पता है? भरोसा न करें कि आपने खुद को फिक्र नहीं किया है।

(ललित प्रिंट:।
cPickle.dump (प्रोटोकॉल = -1) संपीड़ित करता है, एक मामले 15M अचार/60M SQLite में है, लेकिन तोड़ सकते हैं
स्ट्रिंग्स कि कई बार, जैसे देश के नाम होते हैं, लग सकता है आप अपेक्षा से अधिक स्मृति; बिल्टिन इंटर्न देखें()
)

+0

डेनिस: प्रोटोकॉल = -1 और विनोद की भावना के बारे में आपकी चेतावनी के लिए धन्यवाद (पुनः: उन बेंचमार्कों पर भरोसा करें जिन्हें आपने स्वयं नहीं बनाया है ... LMAO!) – Malcolm

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