1. Learn
  2. /
  3. Cursuri
  4. /
  5. Scriere eficientă a codului Python

Connected

exercițiu

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_arrays din bmi_arrays.
  • După ce ai finalizat pașii de mai sus, folosește %mprun pentru a profila funcția calc_bmi_arrays() aplicată pe datele supererouilor tăi. Array-urile sample_indices, hts și wts au 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?)

Instrucțiuni

50 XP

Răspunsuri posibile