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

Connected

Exercice

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_profiler dans votre session IPython.
  • Importez calc_bmi_arrays depuis bmi_arrays.
  • Une fois ces étapes terminées, utilisez %mprun pour profiler la fonction calc_bmi_arrays() appliquée à vos données de superhéros. Les tableaux sample_indices, hts et wts ont é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 ?)

Instructions

50 XP

Réponses possibles