Python ont une pile/tas et comment la mémoire est-elle gérée?
Comment sont variables et mémoire gérés en Python? A-t-elle d'une pile et un tas et quel algorithme est utilisé pour gérer la mémoire? Compte tenu de cette connaissance existe-il des recommandations sur la gestion de la mémoire pour un grand nombre de données/croquer?
- Vous pourriez avoir une lecture des deux suivantes: foobarnbaz.com/2012/07/08/understanding-python-variables docs.python.org/2/c-api/memory.html
- Est-il un problème spécifique avec Python var/gestion de la mémoire que vous avez un problème avec et n'est pas trivialement découvert par la documentation Python et/ou Googler?
Vous devez vous connecter pour publier un commentaire.
Automatiquement! Non, vraiment, il vous suffit de créer un objet et le Python de la Machine Virtuelle gère la mémoire nécessaire et où il doit être placé dans la disposition de la mémoire.
Quand nous parlons de l'
CPython
il utilise un tas privé pour stocker des objets. De la Disponible documentation de l'API C:De la mémoire de la remise en état est principalement géré par le de comptage de référence. Qui est, le Python VM garde un journal interne de la façon dont de nombreuses références référence à un objet, et automatiquement collecte des ordures quand il n'y a pas plus de références se rapportant à elle. En outre, il est un moyen de briser les références circulaires (qui de comptage de référence ne peut pas gérer) par la détection de inaccessible "îles" des objets, un peu dans le sens inverse de la traditionnelle algorithmes de GC que d'essayer de trouver tous les accessible des objets.
REMARQUE: Veuillez garder à l'esprit que cette information est
CPython
spécifiques. D'autres implémentations de python, commepypy
,iron python
,jython
et d'autres peuvent différer l'un de l'autre et de Disponible quand il s'agit de leur mise en œuvre dans les détails. Pour comprendre mieux, il peut aider à comprendre qu'il y a une différence entre Python, la sémantique (la langue) et de l'implémentation sous-jacenteMaintenant, je ne peux pas parler à ce sujet, mais je suis sûr que NumPy (le plus populaire de la bibliothèque python pour de nombreux calculs) a des mécanismes qui gèrent la consommation de mémoire gracieusement.
Si vous souhaitez en savoir plus à propos de Python Internals de prendre un coup d'oeil à ces ressources:
Python n'a pas tout telle chose.
Python est le langue et ne précise pas comment exactement implémentations doit atteindre la sémantique définie par Python le langage.
Chaque application (Disponible, PyPy, IronPython, Stackless, Python...) est libre de faire sa propre chose!
Dans CPython, tous objets en direct sur le tas:
Le Disponible de la machine virtuelle à pile:
Garder à l'esprit que ce est Disponible spécifiques. La pile ne contient pas le réelle valeurs si, il garde les références à ces objets.
1: Source