Mise en cache forcée pour d'autres types d'objet en Python
En creusant un peu sur Internet, j'ai cru comprendre que l'équivalent du mécanisme de small integer caching s'appelait string interning pour les chaines de caractères. J'ai également découvert qu'on pouvait utiliser la fonction sys.intern() pour forcer Python à utiliser ce mécanisme sur les chaines de caractères.
Ma question est : existe-il une fonction similaire pour forcer la mise en cache des autres type d'objet comme un int ou un float par exemple ?
Bonsoir,
Effectivement, pour les entiers (int), Python applique un mécanisme d'internement automatique appelé small integer caching. Ce cache concerne les entiers de -5 à 256
Par contre pour les float tu n'as pas ce mécanisme.
Tu peux aussi mettre en cache les résultats d'appel à une fonction : https://docs.python.org/fr/3.10/library/functools.html#functools.lru_cache. Mais bon, là c'est encore autre chose :)
Merci pour les précisions.
Et autre question du coup. J'ai remarqué que le small integer caching ne fonctionnait pas de la même manière lorsque je suis dans un interpréteur Python et lorsque je suis dans un fichier .py.
Est ce que c'est Python qui essaye d'optimiser mes fichiers .py en mettant en "cache" des entiers de mon code, même lorsqu'il sont en dehors de la plage -5 : 256 ?
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte