Використання %mprun: Hero BMI 2.0
Подивімося, чи допоможе інший підхід до обчислення ІМТ зекономити пам'ять. Нагадаємо, зріст і вага кожного героя зберігаються в масивах numpy. Це означає, що ви можете скористатися зручним індексуванням масивів і broadcasting у NumPy, щоб виконати обчислення. Функцію calc_bmi_arrays створено та збережено у файлі bmi_arrays.py. Для зручності вона наведена нижче:
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
Зверніть увагу, що ця функція виконує всі необхідні обчислення за допомогою масивів.
Перевірмо, чи зменшує цей оновлений підхід із масивами споживання пам'яті:
- Завантажте пакет
memory_profilerу вашу сесію IPython. - Імпортуйте
calc_bmi_arraysізbmi_arrays. - Після виконання наведених кроків скористайтеся
%mprun, щоб профілювати функціюcalc_bmi_arrays()на ваших даних про супергероїв. Масивиsample_indices,htsіwtsвже завантажено у вашу сесію.
Після того як завершите кодування, дайте відповідь на запитання:
Скільки пам'яті споживають рядки коду з індексуванням масивів і broadcasting у функції calc_bmi_array()? (тобто яка загальна сума стовпця Increment для цих чотирьох рядків коду?)
Ця вправа є частиною курсу
Ефективне написання коду Python
Практична інтерактивна вправа
Перетворіть теорію на практику за допомогою однієї з наших інтерактивних вправ
Почати вправу