Profilage du code pour l'utilisation de la mémoire

Écrire du code Python efficace

Logan Thomas

Scientific Software Technical Trainer, Enthought

Approche rapide et sommaire

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
Écrire du code Python efficace

Profilage de code : mémoire

  • Statistiques détaillées sur la consommation de mémoire
  • Analyses ligne par ligne
  • Package utilisé : memory_profiler
pip install memory_profiler
  • Utilisation du package memory_profiler
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Écrire du code Python efficace

Profilage de code : mémoire

  • Les fonctions doivent être importées lors de l'utilisation de memory_profiler
    • hero_funcs.py

 

from hero_funcs import convert_units
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Écrire du code Python efficace

Résultat %mprun

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

alt=”Magic command mprun tabular output summarizing memory usage profiling statistics”

Écrire du code Python efficace

Résultat %mprun

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

alt=”Magic command mprun tabular output summarizing memory usage profiling statistics with Line # column highlighted”

Écrire du code Python efficace

Résultat %mprun

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

alt=”Magic command mprun tabular output summarizing memory usage profiling statistics with Mem usage column highlighted”

Écrire du code Python efficace

Résultat %mprun

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

alt=”Magic command mprun tabular output summarizing memory usage profiling statistics with Increment column highlighted”

Écrire du code Python efficace

Résultat %mprun

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

alt=”Magic command mprun tabular output summarizing memory usage profiling statistics with Line contents column highlighted”

Écrire du code Python efficace

Résultat %mprun

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

alt=”Magic command mprun tabular output summarizing memory usage profiling statistics”

Écrire du code Python efficace

Avertissement concernant le résultat %mprun

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

alt=”Magic command mprun tabular output summarizing memory usage profiling statistics with mebibytes (MiB) in output highlighted”

Écrire du code Python efficace

Avertissement concernant le résultat %mprun

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

(ensemble de données non original de 480 super-héros)

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

alt=”Magic command mprun tabular output summarizing memory usage profiling statistics”

Écrire du code Python efficace

Avertissement concernant le résultat %mprun

De petites allocations de mémoire pourraient entraîner un résultat de 0.0 MiB.

(en utilisant l'ensemble de données original de 480 super-héros)

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

alt=”Magic command mprun tabular output summarizing memory usage profiling statistics with all rows in Increment column showing 0.0 MiB”

Écrire du code Python efficace

Avertissement concernant le résultat %mprun

  • Inspecte la mémoire en interrogeant le système d'exploitation
  • Les résultats peuvent varier selon les plateformes et les exécutions
    • Il est toujours possible d'observer comment chaque ligne de code se compare aux autres en fonction de la consommation de mémoire
Écrire du code Python efficace

Passons à la pratique !

Écrire du code Python efficace

Preparing Video For Download...