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

Connected

Exercise

Użycie %mprun: BMI superbohaterów

Chcesz obliczyć wskaźnik masy ciała (BMI) dla wybranej próbki superbohaterów. BMI można obliczyć według poniższego wzoru:

BMI = masa(kg) / wzrost(m)^2

Losowa próbka 25 000 superbohaterów została wczytana do twojej sesji jako tablica o nazwie sample_indices. To lista indeksów odpowiadających poszczególnym superbohaterom wybranym z listy heroes.

Funkcja o nazwie calc_bmi_lists została również utworzona i zapisana w pliku bmi_lists.py. Dla wygody jest wyświetlona poniżej:

def calc_bmi_lists(sample_indices, hts, wts):

    # Gather sample heights and weights as lists
    s_hts = [hts[i] for i in sample_indices]
    s_wts = [wts[i] for i in sample_indices]

    # Convert heights from cm to m and square with list comprehension
    s_hts_m_sqr = [(ht / 100) ** 2 for ht in s_hts]

    # Calculate BMIs as a list with list comprehension
    bmis = [s_wts[i] / s_hts_m_sqr[i] for i in range(len(sample_indices))]

    return bmis

Zwróć uwagę, że funkcja wykonuje wszystkie obliczenia przy użyciu wyrażeń listowych (stąd nazwa calc_bmi_lists()). Przyjrzyj się jej bliżej i przeanalizuj zużycie pamięci podczas obliczeń opartych na listach:

  • Wczytaj pakiet memory_profiler do swojej sesji IPython.
  • Zaimportuj calc_bmi_lists z bmi_lists.
  • Po wykonaniu powyższych kroków użyj %mprun, aby sprofilować funkcję calc_bmi_lists() na danych swoich superbohaterów. Tablica hts i tablica wts zostały już wczytane do sesji.

Po zakończeniu pisania kodu odpowiedz na poniższe pytanie:

Ile pamięci zużywają linie kodu z wyrażeniami listowymi w funkcji calc_bmi_lists()? (tzn. jaka jest łączna suma kolumny Increment dla tych czterech linii kodu?)

Instrukcje

50 XP

Możliwe odpowiedzi