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 :

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_profilerdans votre session IPython. - Importez
calc_bmi_listsdepuisbmi_lists. - Une fois ces étapes terminées, utilisez
%mprunpour profiler la fonctioncalc_bmi_lists()appliquée à vos données de superhéros. Les tableauxhtsetwtsont 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 ?)
Cette activité fait partie du cours
Rédiger du code Python efficace
Exercice interactif pratique
Passez de la théorie à l’action grâce à l’un de nos exercices interactifs
Commencer l’exercice