केवल 12% CPU पावर का उपयोग करके पायथन इंटरप्रेटर


26

मैं पाठ विश्लेषण के लिए ubuntu पर अजगर का उपयोग कर रहा हूँ। कार्य की गंभीर मात्रा के बावजूद कार्यक्रम CPU उपयोग कर रहा है जैसा कि सिस्टम मॉनिटर में दिखाया गया है 12% पर लगातार रहता है।

मैं से कार्यक्रम की प्राथमिकता बदल Normalकरने के लिए Very High, लेकिन यह कोई प्रभाव नहीं पड़ा।

सीपीयू के उपयोग की मात्रा को सीमित करना क्या है जो मेरे अजगर कार्यक्रम को प्राप्त कर सकता है और मैं इसे कैसे बदल सकता हूं, इसलिए कार्यक्रम अधिक सीपीयू शक्ति का उपयोग कर सकता है?

जवाबों:


73

मुझे लगता है कि आपके पास 8 वर्चुअल कोर (शायद हाइपर-थ्रेडिंग के साथ क्वाड-कोर) वाला सीपीयू है? इसका मतलब है कि एक पूरी तरह से भरी हुई सीपीयू थ्रेड / वर्चुअल कोर 12.5% ​​कुल लोड के बराबर है।

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

केवल तभी जब आपका पायथन प्रोग्राम मल्टीप्रोसेसिंग का उपयोग करता है , जो वास्तव में पायथन इंटरप्रेटर के कई उदाहरण शुरू करता है और उन्हें आपके कार्यों को वास्तव में समानांतर करने देता है, आप कई वर्चुअल कोर / सीपीयू थ्रेड का लाभ उठा सकते हैं। (जैसा कि @SargeBorsch ने अपनी टिप्पणी में बताया, मल्टीप्रोसेसिंग के बिना इसे प्राप्त करने के कुछ उन्नत तरीके भी हैं, लेकिन यह आमतौर पर ऐसा कुछ नहीं है जिसे आप जल्दी से खुद लिखते हैं।)


यह वास्तव में बहुत मायने रखता है। हां मैं 4 कोर (8 वर्चुअल कोर) के साथ क्वाड-कोर कर रहा हूं। टाइ
मथायस हेरमैन 14

9
@MatthiasHerrmann आप यह दिखाने के लिए एक सिस्टम मॉनिटर पर विचार कर सकते हैं कि प्रत्येक CPU किस प्रतिशत पर काम कर रहा है। इस तरह से आप देख सकते थे कि 8 में से केवल 1 सीपीयू 100% पर था। इस विषय पर एयू में एक धागा है: विंडोज "गैजेट" समकक्ष (वाईफाई और सीपीयू उपयोग के लिए)?
विनयुनुच्स 2 यूनिक्स

7
सच नहीं है, यह ठीक है एकल अजगर प्रक्रिया से सभी कोर का उपयोग करना संभव है। बस एक को C कोड को कॉल करना होगा और GIL जारी करना होगा। और कई मौजूदा लाइब्रेरी ठीक यही करती हैं (उदाहरण के लिए सुन्न)।
सर्ज बोर्स्च

2
या उपयोग करें , Jythonया IronPythonजिनके पास GIL नहीं है।
मोनिका

19

एक और संभावना, इस मामले में कम संभावना है, यह है कि प्रोग्राम डिस्क-बाउंड है, अर्थात यह पढ़ने और लिखने के लिए / उस डिस्क से है जो धीमा है, और सीपीयू डिस्क की प्रतीक्षा कर रहा है।


5
iotopi26it
cat

1
या कोड ही तुल्यकालिक और अवरुद्ध है।
ज़ेडनार

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