Použití %mprun: BMI hrdinů 2.0
Pojďme se podívat, jestli jiný přístup k výpočtu BMI dokáže ušetřit nějakou paměť. Jak si možná pamatuješ, výška a hmotnost každého hrdiny jsou uloženy v poli numpy. To znamená, že můžeš využít výhody indexování polí a broadcastingu v NumPy k provedení výpočtů. Funkce calc_bmi_arrays byla vytvořena a uložena do souboru bmi_arrays.py. Pro přehlednost je zobrazena níže:
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
Všimni si, že tato funkce provádí všechny potřebné výpočty pomocí polí.
Podívejme se, jestli tento aktualizovaný přístup s poli sníží nároky na paměť:
- Načti balíček
memory_profilerdo své IPython session. - Importuj
calc_bmi_arraysz modulubmi_arrays. - Jakmile dokončíš výše uvedené kroky, použij
%mprunk profilování funkcecalc_bmi_arrays()na datech svých superhrdinů. Polesample_indices, polehtsa polewtsjsou do session již načtena.
Až s kódováním skončíš, odpověz na následující otázku:
Kolik paměti spotřebují řádky kódu s indexováním polí a broadcastingem ve funkci calc_bmi_array()? (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í