2010-01-13 11 views
21

पायथन ऑप्टिमाइज्ड मोड (-O) में स्क्रिप्ट चला सकता है जो डीबग को बंद कर देता है और यदि मुझे याद है कि डॉकस्ट्रिंग भी हटा दें। मैंने देखा नहीं है कि यह वास्तव में उपयोग किया जाता है और शायद यह पिछले समय की कलाकृति है। क्या इसका इस्तेमाल किया जा रहा है? किस लिए?पायथन अनुकूलित मोड

पायथन 3 में यह बेकार चीज़ क्यों नहीं हटाई जा रही है?

+0

अच्छा सवाल है लेकिन कोई फर्क नहीं पड़ता कि आप इसे क्यों हटाना चाहते हैं !! –

उत्तर

28

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

तो, यह निश्चित रूप से बेकार नहीं है - और निश्चित रूप से उसका उपयोग किया गया (यदि आप सर्वर मशीनों की एक बड़ी संख्या एन, क्यों कभी आप एन बर्बाद करने के लिए चाहते हो जाएगा करने के लिए एक अजगर कोडित सर्वर कार्यक्रम को तैनात * एक्स बाइट्स डॉकस्ट्रिंग रखने के लिए जो कोई भी, कभी भी, तक पहुंचने में सक्षम होगा ?!)। बेशक यह बेहतर होगा अगर यह और भी बचाया जाए, लेकिन, अरे - अपशिष्ट नहीं, नहीं चाहते! -)

तो यह कार्यक्षमता रखने के लिए बहुत अधिक ब्रेनर है (जो कि किसी भी मामले में मामूली सरल है प्रदान करें, आप जानते हैं ;-) पायथन 3 में - बाद में गोद लेने की कठिनाइयों में "ईपीएसलॉन" क्यों जोड़ते हैं?-)

3

दावाों को हटाने का मतलब छोटा प्रदर्शन लाभ है, इसलिए आप इसे "रिलीज़" कोड के लिए उपयोग कर सकते हैं। वैसे भी कोई इसका उपयोग नहीं करता है क्योंकि कई पायथन पुस्तकालय खुले होते हैं और इस प्रकार help() फ़ंक्शन काम करना चाहिए।

तो, जब तक इस मोड में वास्तविक अनुकूलन नहीं है, तो आप इसे अनदेखा कर सकते हैं।

6

विभिन्न लिनक्स वितरण में प्रीपेक्ड सॉफ़्टवेयर अक्सर बाइट-संकलित -ओ के साथ आता है। उदाहरण के लिए, इस करता है, तो अजगर अनुप्रयोगों के लिए Fedora packaging guidelines से:

अतीत में यह आदेश उन फाइल सिस्टम पर अंतरिक्ष की एक छोटी राशि को बचाने के लिए फ़ाइलों .pyo% भूत के लिए आम बात थी। हालांकि, इसमें दो मुद्दे हैं: 1. SELinux के साथ, यदि कोई उपयोगकर्ता पाइथन-ओ [एपीपी] चला रहा है तो यह मौजूद नहीं होने पर .pyos लिखने का प्रयास करेगा। यह लॉग में एवीसी अस्वीकार रिकॉर्ड की ओर जाता है। 2. अगर सिस्टम प्रशासक पायथन -ओ [एपीपी] चलाता है तो .pyos कोई डॉकस्ट्रिंग के साथ बनाया जाएगा। कुछ कार्यक्रमों को कार्य करने के लिए दस्तावेज़ों की आवश्यकता होती है। पाइथन -ओ [एपीपी] पायथन के साथ बाद के रनों पर कैश किए गए .pyos का उपयोग किया जाएगा, भले ही एक अलग अनुकूलन स्तर का अनुरोध किया गया हो। इसे ठीक करने का एकमात्र तरीका यह पता लगाने के लिए है कि .pyos कहां हैं और उन्हें हटाएं।

pyo फ़ाइलों से निपटने की वर्तमान विधि उन्हें शामिल करना है, कोई% भूत नहीं है।

38

अजगर -O करता है वर्तमान में निम्नलिखित:

  • पूरी तरह से ध्यान नहीं देता झूठी (जो डिफ़ॉल्ट रूप से यह सच है है
  • सेट विशेष builtin नाम __debug__ का दावा है)

और जब कहा जाता है के रूप में python -OO

  • कोड
  • 012 से दस्तावेज़ों को हटा देता है

मुझे नहीं पता कि हर कोई __debug__ समस्या का उल्लेख क्यों भूल जाता है; शायद ऐसा इसलिए है क्योंकि मैं इसका उपयोग कर रहा हूं :) if __debug__ निर्माण -O के तहत चलते समय कोई बाइटकोड नहीं बनाता है, और मुझे यह बहुत उपयोगी लगता है।

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