1. Uczyć się
  2. /
  3. Courses
  4. /
  5. Wydajny kod w Pythonie

Connected

Exercise

Używanie %mprun: BMI bohaterów 2.0

Sprawdźmy, czy inne podejście do obliczania BMI pozwoli zaoszczędzić pamięć. Jak pamiętasz, wzrost i waga każdego bohatera są przechowywane w tablicy numpy. Możesz więc wykorzystać indeksowanie tablic i broadcasting NumPy do wykonania obliczeń. Funkcja calc_bmi_arrays została już utworzona i zapisana w pliku bmi_arrays.py. Jej kod znajdziesz poniżej:

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

Zwróć uwagę, że ta funkcja wykonuje wszystkie niezbędne obliczenia przy użyciu tablic.

Sprawdźmy, czy to zaktualizowane podejście zmniejsza zużycie pamięci:

  • Załaduj pakiet memory_profiler do swojej sesji IPython.
  • Zaimportuj calc_bmi_arrays z modułu bmi_arrays.
  • Po wykonaniu powyższych kroków użyj %mprun, aby sprofilować funkcję calc_bmi_arrays() działającą na danych superbohaterów. Tablica sample_indices, tablica hts oraz tablica wts zostały już załadowane do sesji.

Po zakończeniu kodowania odpowiedz na poniższe pytanie:

Ile pamięci zużywają linie kodu odpowiedzialne za indeksowanie tablic i broadcasting w funkcji calc_bmi_array()? (tj. jaka jest łączna suma wartości kolumny Increment dla tych czterech linii kodu?)

Instrukcje

50 XP

Możliwe odpowiedzi