Použití %mprun: BMI superhrdinů
Chceš vypočítat index tělesné hmotnosti (BMI) pro vybraný vzorek superhrdinů. BMI se vypočítá podle následujícího vzorce:

Do tvé session byl načten náhodný vzorek 25 000 superhrdinů jako pole sample_indices. Tento vzorek obsahuje seznam indexů, které odpovídají indexům jednotlivých superhrdinů vybraných ze seznamu heroes.
Funkce calc_bmi_lists byla také vytvořena a uložena do souboru bmi_lists.py. Pro přehlednost je zobrazena níže:
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
Všimni si, že tato funkce provádí všechny výpočty pomocí list comprehension (odtud název calc_bmi_lists()). Ponořte se do této funkce hlouběji a analyzuj paměťovou náročnost výpočtů prováděných pomocí seznamů:
- Načti balíček
memory_profilerdo své IPython session. - Importuj
calc_bmi_listsz modulubmi_lists. - Jakmile budeš mít oba kroky hotové, použij
%mprunk profilování funkcecalc_bmi_lists()na datech svých superhrdinů. Polehtsawtsjsou do tvé session již načtena.
Až budeš s kódem hotov/a, odpověz na následující otázku:
Kolik paměti spotřebují řádky s list comprehension ve funkci calc_bmi_lists()? (tj. jaký je celkový součet sloupce Increment pro tyto čtyři řádky kódu?)
Toto cvičení je součástí kurzu
Psaní efektivního kódu v Pythonu
Interaktivní praktické cvičení
Proměňte teorii v praxi s jedním z našich interaktivních cvičení
Začít cvičení