Comment les variables et la mémoire sont-elles gérées en Python?
Automagiquement! Non, vraiment, vous créez juste un objet et la machine virtuelle Python gère la mémoire nécessaire et où elle doit être placée dans la disposition de la mémoire.
At-il une pile et un tas et quel algorithme est utilisé pour gérer la mémoire?
Quand nous en parlons, CPython
il utilise un tas privé pour stocker des objets. À partir de la documentation de l'API CPython C :
La gestion de la mémoire en Python implique un tas privé contenant tous les objets et structures de données Python. La gestion de ce tas privé est assurée en interne par le gestionnaire de mémoire Python. Le gestionnaire de mémoire Python a différents composants qui traitent de divers aspects de la gestion du stockage dynamique, comme le partage, la segmentation, la préallocation ou la mise en cache.
La récupération de la mémoire est principalement gérée par le comptage de références . Autrement dit, la machine virtuelle Python tient un journal interne du nombre de références faisant référence à un objet et le ramasse automatiquement lorsqu'il n'y a plus de références qui s'y réfèrent. De plus, il existe un mécanisme pour casser les références circulaires (que le comptage de références ne peut pas gérer) en détectant des "îlots" d'objets inaccessibles, un peu à l'inverse des algorithmes GC traditionnels qui tentent de trouver tous les objets accessibles.
REMARQUE: veuillez garder à l'esprit que ces informations sontCPython
spécifiques. D' autres implémentations de python, commepypy
,iron python
,jython
etautres peuvent différer les unsautres et de CPython en ce qui concerne leurs spécificités de miseœuvre. Pour mieux comprendre cela, il peut être utile de comprendre qu'il existe une différence entre Python, la sémantique (le langage) et l'implémentation sous-jacente
Compte tenu de ces connaissances, existe-t-il des recommandations sur la gestion de la mémoire pour le traitement de grands nombres / données?
Maintenant, je ne peux pas en parler, mais je suis sûr que NumPy (la bibliothèque python la plus populaire pour le calcul des nombres) dispose de mécanismes qui gèrent la consommation de mémoire avec élégance.
Si vous souhaitez en savoir plus sur les composants internes de Python, consultez ces ressources: