1. Learn
  2. /
  3. Курси
  4. /
  5. Ефективне написання коду Python

Connected

вправа

Використання %mprun: ІМТ героїв

Ви хочете обчислити індекс маси тіла (ІМТ, англ. BMI) для вибірки героїв. ІМТ обчислюється за формулою нижче:

BMI = mass(kg) / height(m)^2

Випадкова вибірка з 25 000 супергероїв завантажена у вашу сесію як масив sample_indices. Ця вибірка — це список індексів, що відповідають індексу кожного супергероя у списку heroes.

Функцію calc_bmi_lists також створено та збережено у файлі bmi_lists.py. Для зручності її наведено нижче:

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

Зверніть увагу, що ця функція виконує всі потрібні обчислення за допомогою list comprehension (звідси й назва calc_bmi_lists()). Розберіть цю функцію детальніше та проаналізуйте споживання памʼяті під час обчислень за допомогою списків:

  • Завантажте пакет memory_profiler у вашу сесію IPython.
  • Імпортуйте calc_bmi_lists з bmi_lists.
  • Після виконання наведених кроків скористайтеся %mprun, щоб профілювати функцію calc_bmi_lists() на ваших даних про супергероїв. Масиви hts та wts вже завантажено у вашу сесію.

Після того як закінчите писати код, дайте відповідь на запитання:

Скільки памʼяті споживають рядки з list comprehension у функції calc_bmi_lists()? (тобто яка загальна сума значень у стовпці Increment для цих чотирьох рядків коду?)

Інструкції

50 XP

Можливі відповіді