मेरा प्रश्न अपेक्षाकृत सरल है: यदि मेरे पास एक कोड है जिसमें चक्र के लिए 150 बार पुनरावृत्त होता है। क्या इसे 3 फाइलों में विभाजित करना तेज़ है जहां प्रत्येक चक्र के लिए 50 बार पुनरावृत्त होता है? यदि हां, तो क्या मैं एक ही समय में 3 कोड चला सकता हूं या एक बार में एक? एक अन्य विकल्प इन 3 फाइलों में अजगर multiprocessing का उपयोग करना हो सकता है, लेकिन एक ही सवाल उठता है, क्या मैं उन सभी को एक बार में या एक बार में चला सकता हूं?

0
DPM 27 अक्टूबर 2020, 20:27

1 उत्तर

सबसे बढ़िया उत्तर

टीएल; डीआर - यह निर्भर करता है।

Cpython में, ग्लोबल इंटरप्रेटर लॉक (GIL) यह सुनिश्चित करता है कि किसी दी गई प्रक्रिया में केवल 1 थ्रेड एक समय में अजगर कोड चला सकता है। यदि आपका लूप CPU बाउंड है, तो एक ही प्रक्रिया में थ्रेड्स जोड़ने से इसकी गति नहीं बढ़ती है। यदि आपका लूप डिस्क से डेटा पढ़ने जैसे किसी कारण से सो जाता है, तो थ्रेड इसे गति दे सकते हैं। मल्टीप्रोसेसिंग का उपयोग करना, चूंकि जीआईएल प्रति-प्रक्रिया है, आप प्रसंस्करण को गति दे सकते हैं।

मल्टीथ्रेडिंग और मल्टीप्रोसेसिंग के लिए ओवरहेड है, जिसमें थ्रेड/प्रक्रिया शुरू करने, थ्रेड/प्रक्रिया में डेटा प्राप्त करने और परिणाम वापस करने की लागत शामिल है। आप जो कर रहे हैं उसके आधार पर, यह लूप की तुलना में अधिक महंगा हो सकता है।

तो, इस प्रश्न का कोई सामान्य उत्तर नहीं है। यह अत्यधिक कार्य निर्भर है।

1
tdelaney 27 अक्टूबर 2020, 17:35