Introduction

Dans ce rapide article, nous allons voir comment détecter si notre programme Python contient des memory leaks. Pour se faire, nous allons mesurer l’évolution de la consommation de la RAM en fonction du temps grâce au package memory_profiler. Il s’agit ici de détecter des memory leaks; pas de les corriger ou analyser dans le détail.


Installation de l’outil

pip install memory_profiler
pip install matplotlib

Profiling et affichage des résultats

Si d’habitude vous démarriez votre programme via la commande python votre_programme.py alors il vous suffit de suffixer cette commande avec mprof run --include-children comme ci-dessous:

--include-children permet, comme son nom l’indique, de profiler également les sous processus

mprof run --include-children python votre_programme.py

Dans un nouvel onglet, exécuter la commande suivante pour générer un chart de la consommation de RAM.

mprof plot --output ram-profile.png
# Sur Mac
open ram-profile.png

image

Ici, pas de memory leak détectée sur une mesure de 10 minutes (seulement). Bien sûr, il nécessaire de monitorer beaucoup plus longtemps car on observe quand même une très légère montée de RAM sur la “dernière phase de consolidation”.