मैं अब कई महीनों के लिए पायथन के साथ कोडिंग कर रहा हूं और मुख्य रूप से जियोप्रोसेसिंग कार्यों के लिए कुछ यथोचित जटिल स्क्रिप्ट विकसित की है। कहा जा रहा है, मैं अभी भी बहुत कुछ सीख रहा हूं क्योंकि मैं एक SQL / VBA / VBScript पृष्ठभूमि से आ रहा हूं।
मुझे पता है कि संकलित कोड आमतौर पर उस कोड की तुलना में अधिक तेजी से चलता है जिसे एक भाषा दुभाषिया द्वारा संसाधित किया जाना चाहिए, इसलिए मैं बड़े डेटा के साथ काम करने के लिए .EXE फ़ाइल में जियोप्रोसेसिंग पायथन स्क्रिप्ट को संकलित करने की संभावना में दिलचस्पी रखता हूं।
क्या यह भी संभव है? यदि यह है, तो एक पायथन (.py) स्क्रिप्ट को संकलित करने का सबसे अच्छा तरीका क्या है जो आर्कगिसस्क्रिप्टिंग या आर्कपी मॉड्यूल का आयात कर रहा है?
मैंने कुछ मिनट लगाने की कोशिश की कि मैं क्या करना चाहता हूं और खोज ने इस लेख को अन्य लोगों के बीच वापस लौटा दिया: http://www.ehow.com/how_2091641_compile-python-code.html
कंपाइलर काम करने लगता था, लेकिन परिणामी .EXE फ़ाइल को निष्पादित करने पर, यह एक गुप्त त्रुटि बता देता है कि कुछ फाइलें अनुपलब्ध थीं।
पायथन स्क्रिप्ट चलती है जो कमांड लाइन से काफी अच्छी तरह से प्रतीत होती है, लेकिन मैं सोच रहा हूं कि क्या मैं कुछ मामूली सुधार देख सकता हूं अगर मैं .py फ़ाइल को संकलित करने में सक्षम था। फिर से, मैं कुछ बड़े डेटासेट्स के साथ काम कर रहा हूं, जिन्हें प्रोसेस करने में +20 घंटे लग रहे हैं (इनपुट वाटर-क्वालिटी सैंपल साइट्स से वाटरशेड्स डिलीट कर रहे हैं)। मैं सुधार के रास्ते में कुछ भी ले सकता हूं।
स्क्रिप्ट साइटों की एक परीक्षण सेट का उपयोग कमांड लाइन से जल्दी ArcGIS के बाहर 10% भाग गया बनाम ArcCatalog में एक नया पिटारे में एक स्क्रिप्ट उपकरण के रूप में स्क्रिप्ट की स्थापना। मैं कमांड लाइन w / o से एक समर्पित मशीन पर आर्कजीआईएस के किसी भी उदाहरण को खोलने के लिए स्क्रिप्ट चला रहा हूं।
तो, क्या पायथन लिपियों को संकलित करना संभव है जो आर्कगिसस्क्रिप्टिंग मॉड्यूल को आयात करते हैं और जो आर्कटूलबॉक्स टूल कहते हैं?
संपादित करें
इनपुट के लिए धन्यवाद, यह मेरे लिए उपयोगी है। स्क्रिप्ट काफी हद तक आर्कगिस उपकरणों की एक संख्या को समन्वित करने और वांछित स्वरूपों / स्थानों / उपयुक्त एट्रिब्यूशन के साथ आउटपुट करने का एक तरीका है। मैंने पहले से ही कुछ वसा की छंटनी की है जो मुझे लगता है कि कुछ अंतरिम रेखापुंज फ़ाइलों के लिए एक स्क्रैच पर्सनल जियोडैटेबेस के बजाय एक स्क्रैच फ़ोल्डर में लिख दिया जाता है ताकि उन्हें ईएसआरआई जीआरआईडी प्रारूप बनाम आईएमजी प्रारूप में संग्रहीत किया जा सके। मैं हालांकि profiler सुझावों की जाँच करेंगे।
मेरे कार्यालय में कुछ ऐसे हैं जो पायथन से यह कहते हुए सवाल करते हैं कि "संकलित कोड एक दुभाषिया के माध्यम से चलने वाले कोड की तुलना में बहुत तेज है", मुख्य रूप से संकलित विज़ुअल बेसिक प्रोग्राम या VB.NET प्रोग्राम की तुलना में, लेकिन यह एक अच्छा बिंदु है उपकरण या तो समय लेने जा रहे हैं। और, ऐसा लगता है कि वर्तमान दिन की कंप्यूटिंग मशीनों के साथ कोड की व्याख्या करने वाला यह हो सकता है कि संकलित कोड की तुलना में इतना धीमा न हो कि अतिरिक्त ढेर हो जाए।
EDIT - रेखापुंज स्वरूपों के साथ कार्यक्रम के अनुकूलन पर अद्यतन।
इस पायथन कार्यक्रम के मेरे "अनुकूलन" का पालन करना चाहते थे, और मैं एक व्यक्तिगत जियोडेटाबेस के बजाय जीआरआईडी प्रारूप में अंतरिम आपदाओं को लिखकर 2 घंटे की प्रसंस्करण समय दाढ़ी बनाने में सक्षम था। इतना ही नहीं, डेटा साइज़ डिस्क स्थान की खपत में एक SIGNIFICANT कमी थी। मूल रन मैंने सभी रैस्टर्स को लिखा था (और वे केवल पॉइंट फीचर्स थे जो रैस्टर्स में बदल गए थे, और फिर वाटरशेड रैस्टर्स) 37.1 जीबी डेटा सिर्फ उन फाइलों के लिए थे। जीआरआईडी प्रारूप में एक फ़ोल्डर में बाद के दो डेटा आउटपुट लिखना 667 एमबी डेटा तक कम हो गया था।
मैं यह देखने के लिए उत्सुक हूं कि एक फ़ाइल GDB इन डेटा को कैसे संभालती है, हालांकि मुख्य रूप से डेटा के आकार के रूप में। लेकिन, मेरे प्रसंस्करण समय को 9.5 घंटे से घटाकर 7.5 घंटे करना निश्चित रूप से जीआरआईडी प्रारूप में जियोडैट डेटाबेस के बाहर की आपदाओं से निपटने के लिए पर्याप्त है।