2012-09-27 5 views
15

मैंने पिछले 3 घंटों को यह पता लगाने की कोशिश की कि क्या यह निष्क्रिय करने के लिए या इंटरैक्टिव मोड के बिना पाइथन बनाने के लिए या लिनक्स के लिए पाइथन निष्पादन योग्य छोटे आकार का आकार कैसे प्राप्त किया जा सकता है।एम्बेडेड पायथन दुभाषिया के आकार को अनुकूलित करना

जैसा कि आप अनुमान लगा सकते हैं कि यह एक एम्बेडेड डिवाइस के लिए है और क्रॉस संकलन के बाद पाइथन लगभग 1 एमबी बड़ा है और यह मेरे लिए बहुत अधिक है।

अब सवाल:

वहाँ पायथन निष्पादन हटना संभावनाएं हैं? शायद इंटरैक्टिव मोड को अक्षम करने के लिए (कमांड लाइन पर पायथन प्रोग्राम शुरू करना)।

मैंने कॉन्फ़िगरेशन विकल्पों की तलाश की और उनमें से कुछ को आजमाया लेकिन यह मेरे निष्पादन योग्य के लिए कोई भी परिवर्तन नहीं करता है।

मैं इसे जीसीसी से अनुकूलित विकल्पों के साथ संकलित करता हूं और यह पहले ही छीन लिया गया है।

+0

इस [तो सवाल] (देखें http://stackoverflow.com/questions/240996/anyone-using-python-for-embedded-projects?rq=1) 16 एमबी रैम – Mark

+0

में चलाने के लिए मैंने इसे पढ़ा है लेकिन समस्या यह है कि 2008 के बाद से tinypy अपडेट नहीं किया गया था! और tinypy के लिए सभी पुस्तकालयों का उपयोग करना या उपयोग करने में आसान नहीं है! प्रत्येक पुस्तकालय के लिए बहुत अधिक काम। असंभव लक्ष्य कि पाइथन का आकार 500kb – Benny

+1

से कम था, कई साल पहले मैं एक ऐसी कंपनी में था जो एम्बेडेड हार्डवेयर का उपयोग करता था और कई अलग-अलग दुभाषियों की कोशिश करने के बाद, हमने एक एम्बेडेड फर्थ पर फैसला किया था। निष्पादन योग्य मूल बाइनरी से छोटे थे, मैं आप नहीं हूं। –

उत्तर

2

कई तरीकों से आप कॉन्फ़िगर करके इसे थोड़ा और नीचे क्रैम कर सकते हैं, लेकिन बहुत कुछ नहीं।

इसके अलावा, वास्तविक इंटरैक्टिव-मोड कोड बहुत छोटा है, इसलिए मुझे संदेह है कि आप वहां बहुत से बचत करने जा रहे हैं।

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

एकमात्र अन्य वास्तविक विकल्प एक पाइथन जैसी भाषा के लिए एक छोटे दुभाषिया लिखना होगा- उदाहरण के लिए, tinypy परियोजना को उठाकर। लेकिन आपकी टिप्पणियों से, ऐसा लगता है कि "पायथन जैसी" आपके लिए पर्याप्त नहीं है जब तक कि यह बहुत नजदीकी न हो।

ठीक है, मुझे लगता है कि एक और विकल्प है: CPython की तुलना में एक अलग, अच्छे पायथन कार्यान्वयन को हैक करें। समस्या यह है कि ज्योथन और आयरनपीथन मूल कोड नहीं हैं (हालांकि हो सकता है कि आप एक जेवीएम-> मूल कंपाइलर का उपयोग कर सकें, या शायद जेईथन के जेएमएमई जेवीएम में पर्याप्त रूप से क्रैम कर सकें?), और पीपीपी वास्तव में एम्बेडेड पर प्राइम टाइम के लिए तैयार नहीं है सिस्टम। (क्या आप कुछ साल इंतजार कर सकते हैं?) तो, आप शायद सीपीथन के साथ फंस गए हैं।

+2

+1 के साथ चल रहा है। पाइथन 1 एमबी में फिट होने से पहले ही काफी उपलब्धि है। यदि एम्बेडेड डिवाइस पर स्पेस इतना तंग है, तो मैं छोटे विकल्पों पर विचार करूंगा, जैसे लुआ (500kb से कम में फिट होने का दावा किया गया है) –

+0

थक्स आप लोगों को तेजी से मदद के लिए और निश्चित रूप से मेरे अंग्रेजी के सुधार के लिए! मुझे लगता है कि हमने इस आकार पर पायथन को अब और शायद हमारे भविष्य के हार्डवेयर में बनाया है जब हमारे पास अधिक फ्लैश स्पेस हो। THX सभी – Benny

+1

पीईपीई इस तरह के संकुचित वातावरण में उपयोग करने के लिए तैयार नहीं होंगे। जोड़ा गया अमूर्त निश्चित रूप से आकार में जोड़ता है और निष्पादन योग्य में एम्बेडेड जेआईटी कंपाइलर मदद नहीं करता है। – fijal

5

आप reallly अजगर हटना चाहते हैं, आप उन परियोजना पर एक नजर है कर सकते हैं:

http://code.google.com/p/python-on-a-chip/

के रूप में साइट पर कहा:

अजगर-ऑन-ए-चिप (पी 14 पी) पाइथन वर्चुअल मशीन (कोडेनामेड पायमाइट) को विकसित करने के लिए एक प्रोजेक्ट है जो एक ओएस के बिना माइक्रोकंट्रोलर पर पाइथन भाषा का महत्वपूर्ण सबसेट चलाता है। पी 14 पी के अन्य हिस्सों डिवाइस ड्राइवर, उच्च स्तरीय पुस्तकालय और अन्य उपकरण हैं। इस परियोजना को पर चर्चा करने के लिए कृपया पायथन-ऑन-ए-चिप Google समूह में शामिल हों।

यह एक छोटे से निचले स्तर हो सकता है उम्मीद से है, लेकिन यह वास्तव में shrinked है:

PyMite वी एम की विशेषताएं:

  • मोटे तौर पर आवश्यक है 55 KB कार्यक्रम स्मृति 4KB में
  • initializes राम; प्रिंट "हैलो वर्ल्ड" को 5 केबी की जरूरत है; 8 केबी न्यूनतम अनुशंसित रैम है।
  • का समर्थन करता है पूर्णांकों, तैरता है, tuples, सूचियों, dicts, कार्य, मॉड्यूल, वर्गों, जेनरेटर, सज्जाकार और संवृति
  • 29 कीवर्ड की 25 और 112 bytecodes 89 का समर्थन करता है अजगर 2.6 से

आप मिल सकता है इस परियोजना से दिलचस्प विचार।

सावधान रहें कि आपको केवल वर्चुअल मशीन मिलती है, यानी। आप पीईसी फाइल चला सकते हैं, पीई नहीं। (Pyc फ़ाइलों क्रॉस प्लेटफॉर्म है, हालांकि कर रहे हैं। और py फ़ाइलों तुलना में काफी छोटा)

वास्तव में, यदि आप वास्तव में छोटी से छोटी अजगर लक्षित करते हैं, आप पुस्तकालय के कुछ हिस्सों को निष्क्रिय करने की जरूरत है, लेकिन शायद यह भी संकलक ही।

इस साइट में दिलचस्प संकेत भी हो सकता है: http://www.awaretek.com/pymo.html

+0

+1। बहुत ही रोचक। यह सीपीथॉन (मार्क-स्वीप जीसी, स्टैकलेस, नो सी एक्सटेंशन इत्यादि) के हैक की बजाय एक साफ-सुथरे पायथन जैसी भाषा की तरह दिखता है। मुझे लगता है कि मैंने सुझाव दिया है कि ओपी के प्रोजेक्ट के लिए स्क्रैच से बहुत अधिक काम होगा, लेकिन पाइमाइट पर निर्माण करने के लिए एक पूरी तरह से उचित परियोजना हो सकती है। यह शायद इस बात पर निर्भर करता है कि ओपी की कितनी stdlib कार्यक्षमता है। – abarnert