पायथन केवल काम करने के लिए एक समय में एक कोर का उपयोग कर रहा है?


13

मैंने हाल ही में देखा कि अजगर केवल काम करने के लिए एक समय में एक कोर का उपयोग कर रहा है। वहाँ एक तरीका है, शायद विशेष बनाता है या आदेश, यह सभी संसाधनों (दूसरा मूल) का उपयोग करने के लिए?


1
यदि आप बार-बार कार्यों के लिए एक बैच प्रक्रिया चला रहे हैं और स्क्रिप्ट सही काम कर रही है और किसी उपयोगी चीज को करने के लिए एक कोर के 100% का उपयोग करता है तो यह इतना खतरनाक नहीं हो सकता है। एक दूसरी प्रक्रिया शुरू करें जो 100% पर अन्य कोर भी चलाए। एक थ्रेडेड प्रक्रिया के साथ सकल प्रभाव बेहतर हो सकता है। यदि आपके पास केवल एक भारी कार्य है, तो स्थिति अलग है।
user30184

यह पहले से ही अधिक जानकारी और समाधान के लिए इस धागे को देखने के लिए चर्चा कर रहा है gis.stackexchange.com/questions/55048/…
iRfAn

क्या आप यह स्पष्ट करने के लिए अपने प्रश्न को संपादित करने में सक्षम होंगे कि क्या यह आम तौर पर या विशेष रूप से आर्कपी के रूप में है (जैसा कि आपके टैग से कहा गया है), कृपया? यदि यह बाद की बात है, तो आप यह प्रदर्शित करने के लिए कुछ विवरण शामिल कर सकते हैं कि यह मामला है यानी आपने इसे कैसे देखा?
PolyGeo

जवाबों:


15

आप पायथन स्क्रिप्ट के भीतर कई कोर का लाभ उठाने के लिए उपप्रकारों का उपयोग कर सकते हैं, ताकि कई कार्य समानांतर में चल सकें। लेकिन आप कई कोर पर एक भी काम नहीं कर सकते। इस एफएक्यू में विस्तृत विवरण देखें: क्या आर्कगिस 10 मल्टी-कोर प्रोसेसर और / या 64-बिट ऑपरेटिंग सिस्टम का समर्थन करता है?

यदि आप एक अनुभवी पायथन उपयोगकर्ता हैं, तो आपको देव शिखर सम्मेलन 2014 से इस उपयोगकर्ता प्रस्तुति में समझाए गए दृष्टिकोण में दिलचस्पी हो सकती है, जिसे पायथन मल्टीप्रोसेसिंग और क्रिटिकल पाथ मेथोडोलॉजी का उपयोग करके समानांतर जियोप्रोसेसिंग कहा जाता है , फिर भी यह आपको कई कोर का उपयोग करने की अनुमति नहीं देगा। एक ही कार्य।

अन्यथा आपको इस साल के आरजीसीआईएस प्रो (पूरी तरह से 64 बिट्स एप्लीकेशन) के रिलीज होने का इंतजार करना होगा ताकि यह परीक्षण किया जा सके कि मल्टी-थ्रेडिंग कैसे होती है ... (या अभी बीटा की कोशिश करें)


4

जैसा कि कुछ उल्लेख किया गया है, आर्कजीआईएस डेस्कटॉप में मल्टीप्रोसेसिंग के लिए कोई समर्थन नहीं है। जब एक डेस्कटॉप वातावरण में जीआईएस डेटासेट को संसाधित करने के बारे में बात की जाती है, तो मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या मैं एक बड़े वर्कफ़्लो को छोटे विखंडू में विभाजित कर सकता हूं जो एक ही समय में कई कोर लोड करने पर गणना की जाएगी। जीपी उपकरण व्यवहार काफी भिन्न हो सकते हैं क्योंकि लगभग हर मामले की व्यक्तिगत रूप से जांच की जानी चाहिए।

एक सरल गणित समस्या को हल करते समय सोचें कि क्या करना है। 1 से 100 तक की सभी संख्याओं को गिनने का सबसे तेज़ तरीका क्या है?

1) एक-एक करके परिणाम जोड़ते हैं और एक-दूसरे को कुल मिलाकर जोड़ते हैं (1 + 2 = 3, 3 + 3 = 6,6 + 4 = 10 और इसी तरह)। एक कोर इस कार्य पर काम कर रहा है।

2) पहले से अलग-अलग विखंडू में मूल्यों को विभाजित करें और पहले (1 से 30, 31 से 60 और 60 से 100) वहां मानों का योग करें। तीन कोर एक ही समय में काम कर रहे होंगे (अंतिम चरण तीन मान प्राप्त करने के लिए होगा)।

चूंकि विभिन्न जीपी उपकरण अलग - अलग बिग-ओ संकेतन के साथ अलग - अलग एल्गोरिदम के कार्यान्वयन हैं , इसलिए आपको कई बार मल्टीपल प्रक्रियाओं को प्रस्तुत करने के संदर्भ में अलग तरीके से संपर्क करना होगा।

एक अच्छा प्रारंभिक बिंदु यह जानने के लिए होगा कि पायथन में पुस्तकालय बहुभाषी कैसे काम करता है। मैं काफी भारी उपयोग करता हूं।

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

एक अन्य उत्तर में नामित आर्कगिस प्रो बीटा 5 में डाउनलोड के लिए उपलब्ध है (ध्यान रखें कि किसी भी कीड़े को जमा करने के लिए आपको एग्री बीटा समुदाय का एक भागीदार होने की आवश्यकता होगी और एक आर्किजीस ऑनलाइन के लिए संगठनों के लिए उपयोग करने में सक्षम होना चाहिए। रन द प्रो)।


1

Pypy अजगर का एक आज्ञाकारी संस्करण है जो CPython ("मानक" अजगर) की तुलना में 4-5 गुना तेज चलता है।

यदि आप इसे स्रोत से बनाने के लिए पर्याप्त बहादुर हैं, तो एक शाखा है कि "समानांतर में एक ही प्रक्रिया में कई स्वतंत्र सीपीयू-भूखे धागे चला सकते हैं।" इसका मतलब है कि आपको किसी भी कोड को फिर से लिखने के बिना मल्टी-थ्रेडिंग का लाभ मिलता है।


0

सरल उत्तर नहीं है। बेहतर जवाब यह निर्भर करता है।

CPython (सबसे अधिक इस्तेमाल किया जाने वाला अजगर) के कार्यान्वयन के कारण, यह मानना ​​सुरक्षित है कि आपका Python वास्तव में मल्टीथ्रेडिंग का लाभ नहीं उठा सकता है। देख:

http://en.wikipedia.org/wiki/Global_Interpreter_Lock

https://wiki.python.org/moin/GlobalInterpreterLock

ध्यान दें कि IO GIL के लिए प्रतिरक्षा है।

अब आप इस बारे में काम कर सकते हैं। जैसा कि दूसरों ने बताया है, आप उपप्रकारों को बंद कर सकते हैं और बहु ​​पुस्तकालय आपकी सहायता कर सकते हैं।


1
I / O प्रतिरक्षा है, लेकिन इसलिए C में कार्यान्वित अधिकांश कार्यों को कॉल कर रहा है, जिसमें अधिकांश GP उपकरण और सब कुछ संख्यात्मक रूप से शामिल है। जीआईएल व्यावहारिक जीआईएस वातावरण में एक सीमा से कम है जितना कोई सोचता है।
जेसन शहीर

0

मैं आर्कगिस के मुद्दों को संबोधित नहीं कर सकता, लेकिन जहां तक ​​पायथन के उपयोग से कई कार्यों को संसाधित करने का सवाल है, तो क्या आपने सेलेरी (celeryproject.org) की तरह एक कार्य प्रबंधक पर विचार किया है? इसके लिए आवश्यक है कि आप विभिन्न प्रसंस्करण कार्यों की पहचान करें, उन्हें वितरण के लिए "प्रबंधक" में जमा करें, "श्रमिक" चलाएं जो प्रबंधक से कार्य प्राप्त करते हैं, उन्हें संसाधित करते हैं, और परिणाम रिपोर्ट करते हैं।

यह लागू करने के लिए गैर-तुच्छ है, लेकिन इसमें अविश्वसनीय लचीलापन है, और आपको प्रसंस्करण क्षमता का पूरा लाभ उठाने की अनुमति देता है (यानी, उन निष्क्रिय कोर का उपयोग करें)।

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