Folosind %mprun: BMI-ul eroilor 2.0
Hai să vedem dacă o abordare diferită pentru calculul BMI-ului poate economisi memorie. Dacă îți amintești, înălțimea și greutatea fiecărui erou sunt stocate într-un array numpy. Asta înseamnă că poți folosi indexarea array-urilor și broadcasting-ul din NumPy pentru a efectua calculele. O funcție numită calc_bmi_arrays a fost creată și salvată într-un fișier numit bmi_arrays.py. Pentru referință, este afișată mai jos:
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
Observă că această funcție realizează toate calculele necesare folosind array-uri.
Hai să vedem dacă această abordare actualizată reduce amprenta de memorie:
- Încarcă pachetul
memory_profilerîn sesiunea ta IPython. - Importă
calc_bmi_arraysdinbmi_arrays. - După ce ai finalizat pașii de mai sus, folosește
%mprunpentru a profila funcțiacalc_bmi_arrays()aplicată pe datele supererouilor tăi. Array-urilesample_indices,htsșiwtsau fost deja încărcate în sesiunea ta.
După ce ai terminat de scris codul, răspunde la următoarea întrebare:
Câtă memorie consumă liniile de cod cu indexarea array-urilor și broadcasting în funcția calc_bmi_array()? (adică, care este suma totală a coloanei Increment pentru aceste patru linii de cod?)
Acest exercițiu face parte din cursul
Scriere eficientă a codului Python
Exercițiu interactiv practic
Transformă teoria în practică cu unul dintre exercițiile noastre interactive
Începe exercițiul