Sommaire

Itérateur et générateur : les mots-clés iter et yield Itérateur:iter

Vous serez souvent amené à manipuler des listes, la plupart du temps de taille assez réduite, c’est-à-dire contenant très peu d’éléments, entre 10 et 100. Dans de tels cas, le système d’exploitation alloue de la mémoire afin d’y stocker les n éléments contenus. Cela ne pose aucun problème pour des traitements nécessitant peu d’espace mémoire. Seulement, lorsque la liste atteint une taille gigantesque, disons plus d’un million d’éléments, comment pallier le problème d’espace mémoire, ou du moins le contourner ? D’autant plus que le Raspberry Pi n’est généralement pas l’environnement idéal pour effectuer des traitements gourmands en mémoire virtuelle, la taille de celle-ci allant de 256 Mo à plus de 4 Go sur les derniers modèles.

En voici la preuve dans le REPL :

>>> 2**50  
1073741824  
>>> list(range(0, 2**30))   
Traceback (most recent call last):  
  File "<stdin>", line 1, in <module>  
MemoryError

La création d’une liste de 1073741824 éléments demanderait beaucoup trop de mémoire. Python lève alors l’exception MemoryError quand la taille de la structure de données ...