%mprun का उपयोग: Hero BMI 2.0
आइए देखें, क्या BMI निकालने का अलग तरीका मेमोरी बचा सकता है। याद करें, हर हीरो की height और weight एक numpy array में स्टोर है। यानी आप NumPy की बेहतरीन array indexing और broadcasting क्षमताओं का उपयोग करके कैलकुलेशन कर सकते हैं। calc_bmi_arrays नाम का एक फंक्शन बनाया गया है और bmi_arrays.py नाम की फ़ाइल में सेव है। सुविधा के लिए, यह नीचे दिखाया गया है:
def calc_bmi_arrays(sample_indices, hts, wts):
# Gather sample heights and weights as arrays
s_hts = hts[sample_indices]
s_wts = wts[sample_indices]
# Convert heights from cm to m and square with broadcasting
s_hts_m_sqr = (s_hts / 100) ** 2
# Calculate BMIs as an array using broadcasting
bmis = s_wts / s_hts_m_sqr
return bmis
ध्यान दें कि यह फंक्शन सभी ज़रूरी कैलकुलेशन arrays का उपयोग करके करता है।
आइए देखें, क्या यह नया array-आधारित तरीका आपकी मेमोरी footprint को घटाता है:
- अपने IPython सेशन में
memory_profilerपैकेज लोड करें। bmi_arraysसेcalc_bmi_arraysइंपोर्ट करें।- ऊपर के स्टेप्स पूरे करने के बाद,
%mprunका उपयोग करके अपने superheroes डेटा पर चल रहेcalc_bmi_arrays()फंक्शन को प्रोफाइल करें।sample_indicesarray,htsarray, औरwtsarray आपके सेशन में लोड हैं।
कोडिंग पूरी करने के बाद, यह सवाल जवाब दें:
calc_bmi_array() फंक्शन में array indexing और broadcasting वाली कोड लाइनों ने कितनी मेमोरी खाई? (अर्थात, इन चार लाइनों के लिए Increment कॉलम का कुल योग कितना है?)
यह अभ्यास पाठ्यक्रम का हिस्सा है
Efficient Python Code लिखना
इंटरैक्टिव व्यावहारिक अभ्यास
हमारे इंटरैक्टिव अभ्यासों में से किसी एक के साथ सिद्धांत को व्यवहार में बदलें
अभ्यास शुरू करें