comprendre la surconsommation mémoire ? (les boucles actives expliquent la consommation processeur, mais pour la mémoire ?)
Prenons ce court bout de code :
forfdinrange(3,X):try:os.close(fd)except:pass
Avec la valeur X=10000000, il s'exécute en 6s avec python2 .
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2609 alpha 20 0 342120 325216 4088 R 100.0 0.1 (snip) python2
real 0m6.304s
Avec la valeur X=100000000, il s'exécute en 66s toujours avec python2. Et la mémoire s'affole.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2610 alpha 20 0 3206084 3.041g 4108 R 100.0 1.2 (snip) python2
real 1m5.876s
Même machine, même code, juste en exécutant avec python3. Beaucoup plus raisonnable en mémoire. Par contre la boucle active occupe toujours le processeur forcément.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2611 alpha 20 0 28732 10032 5424 R 100.0 0.0 (snip) python3
real 1m0.274s
Du coup il y a une fuite quelque part avec Python2, pas directement liée au code lui-même.
# Concernant la mémoire
Posté par Benoît Sibaud (site web personnel) . En réponse à la dépêche Incident du 26 août 2025 ayant touché les serveurs de production et de développement. Évalué à 8.
Prenons ce court bout de code :
Avec la valeur X=10000000, il s'exécute en 6s avec python2 .
Avec la valeur X=100000000, il s'exécute en 66s toujours avec python2. Et la mémoire s'affole.
Même machine, même code, juste en exécutant avec python3. Beaucoup plus raisonnable en mémoire. Par contre la boucle active occupe toujours le processeur forcément.
Du coup il y a une fuite quelque part avec Python2, pas directement liée au code lui-même.