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_profilerdo swojej sesji IPython. - Zaimportuj
calc_bmi_arraysz modułubmi_arrays. - Po wykonaniu powyższych kroków użyj
%mprun, aby sprofilować funkcjęcalc_bmi_arrays()działającą na danych superbohaterów. Tablicasample_indices, tablicahtsoraz tablicawtszostał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?)
To ćwiczenie jest częścią kursu
Wydajny kod w Pythonie
Interaktywne ćwiczenie praktyczne
Przekształć teorię w praktykę dzięki jednemu z naszych interaktywnych ćwiczeń
Rozpocznij ćwiczenie