Ces dernières semaines nous t'avons testé et présenté nombre de scripts publiés dans la bibliothèque NumWorks, dont pas mal de fonctions récursives dessinant des fractales.
Par exemple, une fonction factorielle(n) définie récursivement peut échouer à partir de n=9 pour la visualisation en ligne, et n=42 sur la calculatrice. Le premier cas est ridicule, et le deuxième reste problématique.
Devant ces limitations évidentes, une question se pose : mais quelle est donc la capacité de la mémoire de travail offerte par la NumWorks aux scripts Python ?
Mais nous n'avons pas ici de module permettant de récupérer des informations sur le matériel, alors comment faire ?
- Code: Select all
def mem():
try:
l = [0]
while True:
try:
l = l + l[l[0]:]
except:
if l[0] < len(l)-1:
l[0] = len(l)-1
else:
print("+", 4*len(l))
l[0] = 4*len(l) + mem()
break
except:
return 0
return l[0]
![](https://i.imgur.com/e6yZJgat.png)
- un bloc contigu de 4Kio
- un bloc contigu de 2Kio
- ...
- deux blocs contigus dans les 4Kio chacun
- un bloc contigu dans les 2Kio
- ...
Aucune liste ne pourra donc à ce jour faire bien plus de 4Kio, et le volume total des données d'un script ne pourra excéder les 13Kio et quelques.
Aussi la capacité offerte à ce jour nous semble assez insuffisante pour permettre le développement de projets de jeux et/ou retouche d'images, conformément à ce que promeuvent les derniers programmes scolaires sortis.
Nous avons donc 17Kio au total dédiés au Python, répartis en :
- 4Kio de mémoire de stockage des scripts
- 13Kio de mémoire de travail pour l'évaluation des scripts
- 1 Mio de mémoire Flash
- 256 Kio de mémoire RAM
Lien : https://workshop.numworks.com/python/andreanx/mem