1. Apprendre
  2. /
  3. Cours
  4. /
  5. Rédiger du code Python efficace

Connected

Exercice

Utiliser %mprun : IMC des héros

Vous souhaitez calculer l'indice de masse corporelle (IMC) pour un échantillon de héros. L'IMC se calcule avec la formule ci-dessous :

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

Un échantillon aléatoire de 25 000 superhéros a été chargé dans votre session sous forme de tableau nommé sample_indices. Cet échantillon est une liste d'indices correspondant à l'indice de chaque superhéros sélectionné dans la liste heroes.

Une fonction nommée calc_bmi_lists a aussi été créée et enregistrée dans un fichier intitulé bmi_lists.py. Pour vous faciliter la tâche, elle est affichée ci-dessous :

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

Remarquez que cette fonction effectue tous les calculs nécessaires au moyen de compréhensions de liste (d'où le nom calc_bmi_lists()). Examinez cette fonction de plus près et analysez l'empreinte mémoire lorsqu'on effectue les calculs avec des listes :

  • Chargez le module memory_profiler dans votre session IPython.
  • Importez calc_bmi_lists depuis bmi_lists.
  • Une fois ces étapes terminées, utilisez %mprun pour profiler la fonction calc_bmi_lists() appliquée à vos données de superhéros. Les tableaux hts et wts ont déjà été chargés dans votre session.

Après avoir terminé votre code, répondez à la question suivante :

Quelle quantité de mémoire les lignes de code avec des compréhensions de liste consomment-elles dans la fonction calc_bmi_lists() ? (c.-à-d. quelle est la somme totale de la colonne Increment pour ces quatre lignes de code ?)

Instructions

50 XP

Réponses possibles