Python est un langage de haut niveau, ce qui permet de ne pas avoir à se soucier de l’allocation/désallocation mémoire. Mais cela ne doit pas nous empêcher d’y réfléchir un minimum, de manière à ne pas gaspiller inutilement une ressource qui peut bien vite devenir limitée...
Lorsque l’on code en Python, il est très agréable de pouvoir utiliser des modules sans avoir à réinventer la roue (carrée, bien souvent). Pourtant, il faut garder à l’esprit que ces quelques lignes d’import, en apparence anodines, peuvent entraîner un accroissement très important de la quantité de mémoire utilisée par un script.
Dans cet article, nous allons étudier cela en analysant différents exemples de code.
1. Un outil pour mesurer la mémoire utilisée… et ses limites
Nous allons utiliser le module memory_profiler qui fournit un décorateur @profile permettant une analyse du code de la fonction décorée ligne par ligne. L’affichage indique la mémoire totale utilisée ainsi que l’augmentation ou la diminution par rapport à la ligne précédente.
Pour installer le module, nous passerons bien évidemment par Pip :
Voici un petit script, test_memory.py, qui va nous permettre de tester le module :
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première