Profilage du code : utilisation de la mémoire

Rédiger du code Python efficace

Logan Thomas

Scientific Software Technical Trainer, Enthought

Méthode rapide et simple

import sys
nums_list = [*range(1000)]
sys.getsizeof(nums_list)
9112
import numpy as np

nums_np = np.array(range(1000))
sys.getsizeof(nums_np)
8096
Rédiger du code Python efficace

Profilage du code : mémoire

  • Statistiques détaillées sur la consommation mémoire
  • Analyses ligne par ligne
  • Forfait utilisé : memory_profiler
pip install memory_profiler
  • Utiliser le forfait memory_profiler
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Rédiger du code Python efficace

Profilage du code : mémoire

  • Les fonctions doivent être importées avec memory_profiler
    • hero_funcs.py

 

from hero_funcs import convert_units
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Rédiger du code Python efficace

Sortie %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

Commande magique mprun : tableau récapitulatif des statistiques de profilage de l'utilisation mémoire

Rédiger du code Python efficace

Sortie %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

Commande magique mprun : tableau récapitulatif des statistiques de profilage de l'utilisation mémoire avec la colonne Line # en surbrillance

Rédiger du code Python efficace

Sortie %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

Commande magique mprun : tableau récapitulatif des statistiques de profilage de l'utilisation mémoire avec la colonne Mem usage en surbrillance

Rédiger du code Python efficace

Sortie %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

Commande magique mprun : tableau récapitulatif des statistiques de profilage de l'utilisation mémoire avec la colonne Increment en surbrillance

Rédiger du code Python efficace

Sortie %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

Commande magique mprun : tableau récapitulatif des statistiques de profilage de l'utilisation mémoire avec la colonne Line contents en surbrillance

Rédiger du code Python efficace

Sortie %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

Commande magique mprun : tableau récapitulatif des statistiques de profilage de l'utilisation mémoire

Rédiger du code Python efficace

Avertissements sur la sortie %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

Commande magique mprun : tableau récapitulatif des statistiques de profilage de l'utilisation mémoire avec les mébioctets (MiB) en sortie mis en évidence

Rédiger du code Python efficace

Avertissements sur la sortie %mprun

Les données de cet exemple sont un échantillon aléatoire de 35 000 héros.

(pas l'ensemble original de 480 superhéros)

%mprun -f convert_units convert_units(heroes, hts, wts)

Commande magique mprun : tableau récapitulatif des statistiques de profilage de l'utilisation mémoire

Rédiger du code Python efficace

Avertissements sur la sortie %mprun

De petites allocations peuvent donner 0.0 MiB en sortie.

(avec l'ensemble original de 480 superhéros)

%mprun -f convert_units convert_units(heroes, hts, wts)

Commande magique mprun : tableau récapitulatif des statistiques de profilage de l'utilisation mémoire où toutes les lignes de la colonne Increment affichent 0.0 MiB

Rédiger du code Python efficace

Avertissements sur la sortie %mprun

  • Inspecte la mémoire en interrogeant le système d'exploitation
  • Les résultats varient selon les plateformes et les exécutions
    • Vous pouvez quand même comparer les lignes entre elles selon la consommation mémoire
Rédiger du code Python efficace

Passons à la pratique !

Rédiger du code Python efficace

Preparing Video For Download...