Utiliser %mprun : IMC de héros 2.0
Voyons si une autre façon de calculer les IMC permet d'économiser de la mémoire. Rappelez-vous que la taille et le poids de chaque héros sont stockés dans un tableau numpy. Vous pouvez donc utiliser l'indexation de tableaux et la diffusion (broadcasting) de NumPy pour effectuer vos calculs. Une fonction nommée calc_bmi_arrays a été créée et enregistrée dans un fichier intitulé bmi_arrays.py. Pour votre commodité, elle est affichée ci-dessous :
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
Remarquez que cette fonction effectue tous les calculs nécessaires à l'aide de tableaux.
Voyons si cette approche mise à jour avec des tableaux réduit votre empreinte mémoire :
- Chargez le module
memory_profilerdans votre session IPython. - Importez
calc_bmi_arraysdepuisbmi_arrays. - Une fois ces étapes terminées, utilisez
%mprunpour profiler la fonctioncalc_bmi_arrays()appliquée à vos données de superhéros. Les tableauxsample_indices,htsetwtsont été chargés dans votre session.
Après avoir terminé votre code, répondez à la question suivante :
Quelle quantité de mémoire les lignes d'indexation de tableaux et de diffusion consomment-elles dans la fonction calc_bmi_array() ? (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