मैं IPython.parallel
के साथ प्रयोग कर रहा हूं और बस विभिन्न इंजनों पर कई शेल कमांड लॉन्च करना चाहता हूं।IPython.parallel मल्टीकोर का उपयोग नहीं कर रहा है?
सेल 0:
मैं निम्नलिखित नोटबुक है
from IPython.parallel import Client
client = Client()
print len(client)
5
और आदेशों का शुभारंभ:
सेल 1:
%%px --targets 0 --noblock
!python server.py
सेल 2:
%%px --targets 1 --noblock
!python mincemeat.py 127.0.0.1
सेल 3:
%%px --targets 2 --noblock
!python mincemeat.py 127.0.0.1
यह MapReduce की mincemeat
कार्यान्वयन का उपयोग करता है क्या करता है। जब मैं पहली !python mincemeat.py 127.0.0.1
लॉन्च करता हूं तो यह लगभग 100% कोर का उपयोग करता है, फिर जब मैं दूसरा लॉन्च करता हूं तो यह प्रत्येक 50% तक गिर जाता है। मेरे पास मशीन पर 4 कोर (+ आभासी कोर) हैं और टर्मिनल से सीधे लॉन्च करते समय उनका उपयोग कर सकते हैं लेकिन नोटबुक में नहीं।
क्या मुझे कुछ याद आ रही है? मैं एक कोर प्रति !python mincemeat.py 127.0.0.1
कमांड का उपयोग करना चाहता हूं।
संपादित करें:
सेल 1:
%%px --targets 0 --noblock
a = 0
for i in xrange(100000):
for j in xrange(10000):
a += 1
सेल 2:
%%px --targets 0 --noblock
a = 0
for i in xrange(100000):
for j in xrange(10000):
a += 1
स्पष्टता के लिए, यहाँ एक और बात यह है कि कई कोर का उपयोग नहीं कर रहा हैमुझे लगता है कि मुझे कुछ याद आ रही है। मेरा मानना है कि उपलब्ध होने पर उन दो कोशिकाओं को एक अलग कोर चलाया जाना चाहिए। हालांकि, यह मामला प्रतीत नहीं होता है। फिर सीपीयू उपयोग से पता चलता है कि वे एक ही कोर साझा करते हैं और इसका 50% उपयोग करते हैं। मैंने गलत क्या किया?
मुझे यकीन नहीं है कि आईपीथॉन का उपयोग करने का बिंदु क्या है।समानांतर, जब आप एक समय में एक मशीन पर सिंगल-लाइन शेल कमांड चला रहे हैं, लेकिन यह असंभव है कि IPython.parallel में आपके उपप्रोसेसेस का कितना कोर उपयोग करने में हस्तक्षेप करने की कोई क्षमता है। ऐसा लगता है कि यदि आप IPython.parallel के बिना यह वही उदाहरण करते हैं (क्योंकि यह केवल तीन एक-पंक्ति शेल कॉल है)? – minrk
हाय @mnirk। Ipython.parallel के बिना कोशिकाएं अवरुद्ध हो रही हैं, यह बहुत कम दिलचस्प है। चीजों को स्पष्ट करने के लिए, मैं अलग-अलग कोरों पर एक प्रक्रिया नहीं चलाना चाहता, बल्कि मैं चाहता हूं कि प्रत्येक प्रक्रिया को एक कोर प्राप्त हो। यही कारण है कि मैं प्रत्येक आदेश को एक अलग लक्ष्य पर आवंटित करता हूं। हालांकि, ऐसा लगता है कि सभी इंजन (लक्ष्य 0 से 4) एक ही कोर पर चल रहे हैं। – zermelozf
मेरा मतलब है कि यह तीन सादे टर्मिनल सत्रों में करता है - यह अभी आप अभी कर रहे हैं, तीन अलग-अलग सत्रों में एकल शेल कमांड चला रहे हैं। आईपीथन वास्तव में बिल्कुल शामिल नहीं है। – minrk