CommencerCommencer gratuitement

Utilisation de %mprun : Hero BMI 2.0

Vérifions si l'utilisation d'une approche différente pour calculer les IMC peut permettre d'économiser de la mémoire. Si vous vous souvenez bien, la taille et le poids de chaque héros sont enregistrés dans un tableau numpy. Cela signifie que vous pouvez utiliser les fonctionnalités pratiques d'indexation de tableaux et de diffusion 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 plus de commodité, il est affiché 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

Veuillez noter que cette fonction effectue tous les calculs nécessaires à l'aide de tableaux.

Vérifions si cette approche mise à jour du tableau réduit votre empreinte mémoire :

  • Veuillez charger le package memory_profiler dans votre session IPython.
  • Importez calc_bmi_arrays à partir de bmi_arrays.
  • Une fois les étapes ci-dessus terminées, veuillez utiliser %mprun pour profiler la fonction calc_bmi_arrays() agissant sur vos données relatives aux super-héros. Les tableaux sample_indices, hts et wts ont été chargés dans votre session.

Une fois le codage terminé, veuillez répondre à la question suivante :

Quelle quantité de mémoire les lignes de code d'indexation et de diffusion du tableau consomment-elles dans la fonction d'calc_bmi_array()? (c'est-à-dire, quelle est la somme totale de la colonne « Increment » pour ces quatre lignes de code ?)

Cet exercice fait partie du cours

Écrire du code Python efficace

Afficher le cours

Exercice interactif pratique

Passez de la théorie à la pratique avec l’un de nos exercices interactifs

Commencer l’exercice