2017-08-13 44 views
9

मैं एडब्ल्यूएस लैम्ब्डा को पाइथन पैकेज के साथ .pyc फ़ाइलों को शामिल करने के सटीक प्रभाव को समझने की कोशिश कर रहा हूं।एडब्ल्यूएस लैम्ब्डा और पायथन की .पीसीसी फाइलें

बहुत कम संदर्भ मैं इस पर खोजने में सक्षम था कि पैकेज के साथ .pyc फ़ाइलों को शामिल करने की आवश्यकता नहीं है। हालांकि, जब मैं इन फ़ाइलों को शामिल नहीं करता हूं, तो मुझे अपने लैम्ब्डा फ़ंक्शन के साथ भारी प्रदर्शन हिट दिखाई दे रही है।

अपनी पैकेज (Jinja2, उदाहरण के लिए) के साथ लाइब्रेरी को शामिल करने का प्रयास करते हुए, इसकी .pyc फ़ाइलों को छोड़ते समय, import jinja2 के लिए जितना समय लगता है वह हमेशा 3 सेकंड से अधिक होता है।

जब मैं .pyc फ़ाइलों को प्रदान करता हूं, पहला निष्पादन अभी भी 3 सेकंड लेता है लेकिन उसके बाद, यह 100-200ms तक चला जाता है (मुझे लगता है कि फ़ंक्शन अंततः अनलोड हो जाता है?)।

मुझे यह SO question मिला जो यह सुझाव दे सकता है कि एडब्ल्यूएस लैम्ब्डा अपनी संकलित फाइलों को सहेजने में असमर्थ है, क्या यह समझ में आता है?

मेरे प्रश्न हैं - क्या एडब्ल्यूएस लैम्ब्डा पर पायथन के साथ उपयोग .pyc फ़ाइलों के बारे में जानकारी का कोई निश्चित स्रोत है? क्या एडब्ल्यूएस लैम्ब्डा को अपनी खुद की .pyc फाइलें सहेजने का कोई तरीका है? या क्या मुझे बस अपने पैकेज के साथ शामिल करना जारी रखना चाहिए?

+3

दिलचस्प सवाल। सहजता से मैं कहूंगा कि 'पीईसी' फाइलें मौजूद हैं या नहीं, केवल प्रत्येक एडब्लूएसएस लैम्ब्डा कंटेनर के प्रारंभ के लिए मायने रखती हैं, क्योंकि बाद में सब कुछ रैम में रखा जाना चाहिए। तो मैं काफी परेशान हूं कि आप प्रत्येक अनुरोध के लिए इस देरी को देखते हैं। क्या आपने प्रदर्शन प्रभाव के संबंध में कोई संरचित परीक्षण किया है? – Dunedan

+0

ठीक है, मैं आयात कथन लॉग करने के लिए अलग और समयबद्ध हूं और पीडब्ल्यूसी फाइलों के साथ और बिना, एडब्ल्यूएस कंसोल और दूरस्थ रूप से दोनों कार्यों को बुलाया। परिणाम हमेशा एक ही होते हैं। पीईसी फाइलों के साथ कोड अपडेट धीमा होने के बाद केवल पहला आविष्कार होता है जबकि फ़ंक्शन चलाने वाले पीईसी फाइलों को बिना बार-बार चलाने में हमेशा 3 सेकंड लगते हैं (यह डिफ़ॉल्ट लैम्ब्डा सेटिंग्स के साथ टाइमआउट त्रुटि देता है)। – danielv

+1

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

उत्तर

0

मैं ऐसा नहीं सोचता, .pyc फ़ाइलें एक Byte code जो अजगर दुभाषिया के लिए स्रोत संकलित और फिर इस कोड निष्पादित किया जाता है। इस बात को ध्यान में रखते हुए, हम नियंत्रित कर सकते हैं कि "पायथन वर्चुअल मशीन रन" को कौन सी फाइलों को "

आई थिंक सबसे अच्छा समाधान है जैसे आप ने कहा:

सिर्फ उन्हें अपने पैकेज के साथ शामिल करने के लिए जारी है।

एक बार ऐसा करने के बाद, कोड निष्पादक के पास पहले से ही आपकी बाइटकोड फ़ाइलें हैं।

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