Connaître la taille en RAM libre
Les cartes Micropython disposent en général d'une RAM de taille limitée et c'est probablement une des limites que l'on va rencontrer en premier dès lors que l'on utiliser une carte Micropython. Ouverture d'un fichier un peu volumineux... et on provoque une erreur de RAM. Il est donc important de pouvoir connaître la RAM dont on dispose et même savoir libérer la RAM qui est utilisée inutilement.
Obtenir les informations sur la RAM de la carte
Pour connaître information que la RAM, on dispose d'une fonction dédiée du module micropython
:
>>> import micropython as upy
>>> print (upy.mem_info())
stack: 720 out of 15360
GC: total: 111168, used: 53280, free: 57888
No. of 1-blocks: 1718, 2-blocks: 161, max blk sz: 33, max free sz: 3595
None
Libérer de la RAM
Noter que si on veut libérer la RAM des objets qui ne sont plus utiles ou utilisés, on pourra faire :
>>> import gc
>>> gc.collect()
>>> print (upy.mem_info())
stack: 736 out of 15360
GC: total: 111168, used: 4400, free: 106768
No. of 1-blocks: 96, 2-blocks: 9, max blk sz: 18, max free sz: 3362
None
On voit ici par exemple que 50Ko de RAM ont été libérés par la manip' et a doublé la RAM disponible. Il est donc important de le faire lors des manip' susceptibles de monopoliser beaucoup de RAM.
Liens utiles :
- un petit projet ici d'affichage du OLED de la RAM utilisée : https://github.com/mchobby/pybstick-projects/blob/master/oled-stat/stat.py