python.exe ने काम करना बंद कर दिया है


9

एक पाइथन लिपि लगभग 18 महीने पहले एक ऐसे व्यक्ति द्वारा लिखी गई थी जो अब निकल चुका है। यह तब आवश्यक आउटपुट का उत्पादन किया। मुझे इसे फिर से चलाने के लिए कहा गया है, लेकिन विभिन्न (महीन संकल्प) डेटा इनपुट के साथ। इनपुट डेटासेट को प्रत्येक के लगभग 2,700 डेटा बिंदुओं के 20 उप-सेटों में विभाजित किया गया है। हालाँकि, स्क्रिप्ट क्रैश ("python.exe ने काम करना बंद कर दिया है") लगभग 300 डेटा बिंदुओं को संसाधित करने के बाद (295 से 306 तक सीमा और हमेशा एक ही रिकॉर्ड पर विफल नहीं होता है)।

इसकी पुरानी (ईश) के रूप में, स्क्रिप्ट को आर्कगिसस्क्रिप्टिंग का उपयोग करके लिखा गया था न कि आर्कपी। मोटे तौर पर यह कर्सर का उपयोग करते हुए निम्नलिखित करता है:

  1. किसी दिए गए बिंदु के लिए, 60 मिनट की यात्रा के समय की कटऑफ के साथ लागत दूरी (gp.CostDistance_sa का उपयोग करके) की गणना करें।
  2. प्रत्येक डेटा बिंदु पर सभी अलग-अलग मान निकालने के लिए gp.ExtractValuesToPoints_sa को कॉल करता है और एक फीचर क्लास को एक फाइल जियोडेटैबस में आउटपुट करता है।
  3. ऊपर ख) में बनाई गई सुविधा वर्ग को पढ़ता है और एक CSV फ़ाइल के मानों को लिखता है ("नो डेटा" (मान -9999) के साथ किसी भी बिंदु को छोड़ देता है)।

इनपुट फ़ाइल में सभी शेष डेटा बिंदुओं के लिए 1, 2 और 3 दोहराता है।

प्रसंस्करण समय लगभग है। औसतन प्रति मिनट 1 अंक। यहां कुछ प्रासंगिक तकनीकी विनिर्देश दिए गए हैं:

  • पीसी में क्वाड कोर इंटेल i7-2720QM सीपीयू है जो 2.20GHz पर 8GB रैम के साथ विंडोज 7 (64 बिट) पर चलता है।
  • पायथन संस्करण 2.6.6 है (शेल में यह भी कहा गया है कि "[MSC v, 1500 32 बिट (Intel)] win32 पर)।
  • ArcMap 10.0 (SP4) भी स्थापित किया गया है।

मैंने इसे एक अलग पीसी पर चलाने की कोशिश की है (अब तक दुर्घटनाग्रस्त हुए बिना)। वर्तमान में नौकरी पुराने पीसी पर सफलतापूर्वक (लेकिन अधिक धीरे-धीरे) चल रही है और दुर्घटनाग्रस्त हुए बिना 419 रिकॉर्ड पर पहुंच गई है। इस मशीन के लिए प्रासंगिक विनिर्देश हैं:

  • Intel Core 2 DUO E7500 प्रोसेसर 4 जीबी रैम और 64 बिट विंडोज 7 के साथ 2.93GHz पर चल रहा है।
  • पायथन संस्करण 2.5.1 (शेल में यह भी कहा गया है "[win32 पर MSC v, 1310 32 बिट (Intel)]।
  • ArcMap 9.3 स्थापित है (किसी भी सर्विस पैक का कोई उल्लेख नहीं)।

क्या कोई व्यक्ति इस बारे में कुछ सलाह दे सकता है कि स्क्रिप्ट थोड़ी देर के लिए क्यों काम करती है और दुर्घटनाग्रस्त हो जाती है और इसे कैसे हल किया जाए?

तथ्य यह है कि स्क्रिप्ट को संभालने के लिए एक अलग पीसी प्रकट होता है (अब तक) कुछ "पर्यावरण" का सुझाव देता है।


अपडेट के रूप में, ARCGIS 9.3 चलाने वाला पीसी अभी भी डेटा को सफलतापूर्वक संसाधित कर रहा है और संसाधित किए गए 1,300 डेटा बिंदुओं (और अभी भी गिनती) तक पहुंच गया है। एक सहकर्मी ने ARCGIS 10.1 चल रहे अपने पीसी पर डेटा भी चलाया - यह दो अलग-अलग अवसरों पर 267 रिकॉर्ड के बाद दुर्घटनाग्रस्त हो गया। यद्यपि निर्णायक नहीं है, लेकिन सामान्य सूत्र से लगता है कि आर्क 9.3 डेटा को संसाधित करेगा लेकिन आर्क 10.x नहीं करेगा।


1
आर्कजीआईएस 10.0 अब आर्कपी मॉड्यूल (आर्कगिस 9.x आर्कगिसस्क्रिप्टिंग मॉड्यूल का उपयोग करता है) का उपयोग करता है। यदि आप चाहते हैं कि यह AGS 10 वातावरण में काम करे, तो आपको आर्कपी के साथ-साथ किसी भी जियोप्रोसेसिंग टूल के नामों को समायोजित करने के लिए अपने कोड को फिर से कॉन्फ़िगर करना होगा।
ढोबेबा

5
नहीं, यह सही नहीं है - पुरानी स्क्रिप्ट जो 9.3 में काम करती है, 10 और 10.1 में काम करना जारी रखेगी। आपको चापलूसी के लिए gp को संशोधित करने की आवश्यकता नहीं है। यदि आप नई कार्यक्षमता जोड़ना चाहते हैं, तो आप एक स्क्रिप्ट में gp और चापलूसी भी कर सकते हैं, लेकिन पूरी तरह से रूपांतरित नहीं होते हैं। ..... यह विशेष मामला ऊपर दुर्घटनाग्रस्त क्यों है, मुझे नहीं पता। मेरा सुझाव यह है कि इसे खंडों तक तोड़ दिया जाए और अजगर
बेलों

KHibma, हाँ मुझे लगता है कि समझ में आता है क्योंकि यह एजीएस 10 से चलने पर आंशिक रूप से काम कर रहा था
dchaboya

क्या डेटा पॉइंट बदल गए हैं? मुझे लगता है कि आप सड़क नेटवर्क (यात्रा समय) से दूरी के भीतर सुविधाओं का उपयोग कर रहे हैं। इस बात की कोई गारंटी नहीं है कि डेटा बिंदुओं को संसाधित करने के लिए एल्गोरिदम उन बिंदुओं का प्रबंधन करता है जो प्रक्रिया चलने पर हर बार ठीक उसी तरह होती हैं। 300 या 306 या जो कुछ भी हो सकता है। मैंने NA एक पायथन लिपि में सड़कों और स्थानों पर आधारित नेटवर्क के लागत विश्लेषण के लिए NA का उपयोग किया है और यदि आपने एक छोटा सा उपसमुच्चय आजमाया है, तो मुझे आश्चर्य होगा। मैं अपने कार्य केंद्र पर 60 मिनट की यात्रा के लिए अपने कार्य केंद्र पर बिंदुओं के छोटे समूहों को चलाऊंगा। यात्रा के समय का विश्लेषण प्रसंस्करण शक्ति को नष्ट कर देगा।
JLP के उदाहरण।

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

जवाबों:


1

यदि आप कार्य प्रबंधक चलाते हैं और स्मृति में अजगर के निष्पादन में वृद्धि को देखते हैं और मरने से पहले 1 gb से अधिक हो जाते हैं, तो आप 10.1 64 बिट जियोप्रोसेसिंग में अपग्रेड करने से लाभान्वित हो सकते हैं।

प्रदर्शन के लिए, यदि आप कर्सर का उपयोग कर रहे हैं, तो आपको नए arcpy.da कर्सर से लाभ हो सकता है। http://resources.arcgis.com/en/help/main/10.1/index.html#//018w00000008000000

मैंने arcpy.da का उपयोग करने के लिए एक परियोजना का उन्नयन किया और यह एक 2 परिमाण में सुधार था।


1

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

मुझे पता है कि यह एक भयानक काम है, लेकिन अजगर पुस्तकालय में अजगर इंटरप्रेटर को मारना काफी असामान्य है।

DWORD HKLM or HKCU\Software\Microsoft\Windows\Windows Error Reporting\DontShowUI = "1"
DWORD HKLM or HKCU\Software\Microsoft\Windows\Windows Error Reporting\Disabled = "1"

0

क्या आपने जाँच की है कि स्क्रिप्ट श्रापकर्ताओं को कैसे संभालती है? मेरे एप्लिकेशन अक्सर लटकाए जाते हैं जब मैं उन्हें स्पष्ट का उपयोग करके बंद करना भूल जाता हूं del row, cursor, कभी-कभी केवल कुछ समय बाद।

यदि वह मदद नहीं करता है, तो मैं कोड और / या डेटा के एक छोटे हिस्से का उपयोग करने का सुझाव दूंगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.