• contact@spgoo.org

Libération de la mémoire en python

Auteur: Pascal KREZEL

Création: 12/12/25

Contexte: En appliquant l’algorithme de génération de molécules sur le serveur OVH, j’ai constaté que j’étais rapidement limité au niveau du nombre de fragments pouvant être pris en compte. Ainsi, à partir de 16 000 fragments dont je cherchais les possibilités de liaison chimique, j’étais sûr que le kernel python allait planter au bout d’un certain temps. En regardant les commentaires sur le sujet, j’ai constaté que je n’était pas le premier à constater cela. Certains parlaient de problème de “garbage collector” et j’ai essayé de voir si je pouvais résoudre ce problème.

Réalisation: En ajoutant un premier “gc.collect()” après chaque itération, j’ai constaté que désormais tout se passait bien avec 16 000 fragments. J’ai donc pu augmenter le nombre de fragments mais je problème recommençait. Finalement, aujourd’hui, j’applique une “gc.collect()” après chaque étape importante et je suis arrivé à pouvoir prendre en compte 36 000 fragments sans avoir de problème depuis.

Conclusion: En python, lorque l’on fait des gros calculs, il y a un risque important de manquer de mémoire. Pour cela, il faut penser à appliquer un “gc.collect()” après chaque grande étape du programme.

import gc
gc.collect()