2013-04-08 7 views
33

setuptools प्रलेखन केवल राज्यों:पायथन परियोजना को पैकेज करते समय zip_safe को सही पर सेट करने का क्या फायदा है?

अधिकतम प्रदर्शन के लिए, अजगर संकुल सबसे अच्छा ज़िप फ़ाइलों के रूप में स्थापित कर रहे हैं। हालांकि, सभी संकुल संपीड़ित रूप में चलाने में सक्षम नहीं हैं, क्योंकि वे सामान्य ऑपरेटिंग सिस्टम फ़ाइलों के रूप में स्रोत कोड या डेटा फ़ाइलों तक पहुंचने में सक्षम होने की उम्मीद कर सकते हैं। इसलिए, setuptools आपके प्रोजेक्ट को ज़िपपाइल या निर्देशिका के रूप में स्थापित कर सकता है, और इसकी डिफ़ॉल्ट पसंद प्रोजेक्ट के zip_safe ध्वज (reference) द्वारा निर्धारित की जाती है।

व्यावहारिक रूप से, प्रदर्शन लाभ क्या प्राप्त हुआ है? क्या यह जांचने लायक है कि मेरी परियोजनाएं ज़िप-सुरक्षित हैं, या आमतौर पर लाभ कम से कम हैं?

उत्तर

13

ज़िप फ़ाइलें डिस्क पर कम जगह लेती हैं, जिसका अर्थ है कि वे डिस्क से अधिक तेज़ी से पढ़े जाते हैं। चूंकि अधिकांश चीजें I/O बाध्य हैं, इसलिए पैकेजिंग को कम करने में ओवरहेड डिस्क से बड़ी फ़ाइल पढ़ने में ओवरहेड से कम हो सकता है। इसके अलावा, यह संभावना है कि एक एकल, छोटी-आईश ज़िप फ़ाइल क्रमशः डिस्क पर संग्रहीत की जाती है, जबकि छोटी फ़ाइलों का संग्रह अधिक फैल सकता है। घूर्णन मीडिया पर, यह खोजों की संख्या को कम करके पढ़ा गया प्रदर्शन भी बढ़ाता है। इसलिए आप आमतौर पर कुछ CPU समय की लागत पर अपने डिस्क उपयोग को अनुकूलित करते हैं, जो आपके import और लोड समय में नाटकीय रूप से सुधार कर सकता है।

+0

बस एक नोट: यदि आप तेजी से आयात लोडिंग समय की परवाह करते हैं, तो इसके बारे में फिर से सोचना बेहतर हो सकता है। पाइथन दुभाषिया को अक्सर लोड करने से बचें! उदाहरण: एक पायथन दुभाषिया एक दूसरे के बाद कई वेब अनुरोधों को संभाल सकता है। – guettli

+1

यह उत्तर सबसे अच्छा अधूरा है, क्योंकि यह केवल कारणों के एक छोटे से सबसेट का उल्लेख करता है कि क्यों एक .gg फ़ाइल बेहतर प्रदर्शन कर सकती है। –

5

पहले से उल्लिखित लोगों के अलावा कई फायदे हैं।

एक एकल बड़े .egg फ़ाइल पढ़ना (और यह अनज़िप) एकाधिक (संभावित का एक बहुत) छोटे .py फ़ाइलें लोड, भंडारण माध्यम/फाइल सिस्टम है जिस पर वह रहता है पर निर्भर करता है की तुलना में काफी तेजी से हो सकता है।

कुछ फाइल सिस्टम में एक बड़ा ब्लॉक आकार (उदा।, 1 एमबी) है, जिसका अर्थ है कि छोटी फाइलों से निपटना महंगा हो सकता है। भले ही आपकी फाइलें छोटी हों (कहें, 10 केबी), फिर भी आप इसे पढ़ने के दौरान डिस्क से 1 एमबी ब्लॉक लोड कर सकते हैं। आम तौर पर, फाइल सिस्टम इस बिट को कम करने के लिए एक बड़े ब्लॉक में कई छोटी फ़ाइलों को जोड़ते हैं।

फाइल सिस्टम पर जहां फ़ाइल मेटाडेटा तक पहुंच धीमी है (जो कभी-कभी साझा फाइल सिस्टम, जैसे एनएफएस के साथ होती है), बड़ी मात्रा में फाइलों तक पहुंच बहुत महंगा हो सकती है।

बेशक, पूरे समूह को ज़िप करने से भी मदद मिलती है, क्योंकि इसका मतलब है कि कुल डेटा को कुल में पढ़ना होगा।

लंबी कहानी छोटी: इससे कोई फर्क नहीं पड़ता कि आपकी फाइल सिस्टम बड़ी फ़ाइलों की एक छोटी राशि के लिए अधिक उपयुक्त है।

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

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