Maison développement back-end Tutoriel Python Comment Python effectue la gestion de la mémoire

Comment Python effectue la gestion de la mémoire

Jun 21, 2019 am 10:14 AM
gestion de la mémoire Python

Comment Python effectue la gestion de la mémoire

Python introduit un mécanisme : le comptage de références pour gérer la mémoire.

Python utilise en interne le comptage de références pour garder une trace des objets en mémoire. Python enregistre en interne le nombre de références d'un objet, c'est-à-dire un nombre de références. Lorsqu'un objet est créé, un nombre de références est créé. . Lorsqu'un objet n'est plus nécessaire et que son nombre de références atteint 0, il est récupéré.

Pour résumer, le nombre de références d'un objet sera augmenté de 1 dans les situations suivantes :

L'objet est créé : x=4

.

2. De plus, d'autres sont créés : y=x

3 Passé en paramètres à la fonction : foo(x)

4. =[1,x,'33']

Réduction du nombre de références

1. Une référence locale sort de sa portée. Par exemple, lorsque la fonction foo(x) ci-dessus se termine, la référence d'objet pointée par x est décrémentée de 1.

2. L'alias de l'objet est explicitement détruit : del x; ou del y

3. Un alias de l'objet est attribué à un autre objet : x=789

4. L'objet est supprimé d'un objet fenêtre : myList.remove(x)

5. L'objet fenêtre lui-même est détruit : del myList, ou l'objet fenêtre lui-même quitte la portée.

Garbage Collection

1. Lorsqu'il y a des parties de la mémoire qui ne sont plus utilisées, le garbage collector les nettoie. Il recherche les objets avec un nombre de références de 0 et efface leur espace mémoire. Bien entendu, en plus du décompte de références de 0 qui est effacé, il existe une autre situation qui sera également effacée par le garbage collector : lorsque deux objets se réfèrent l'un à l'autre, leurs autres références sont déjà à 0.

2. Le mécanisme de collecte des ordures dispose également d'un garbage collector circulaire pour garantir que l'objet de référence circulaire est libéré (a fait référence à b et b fait référence à a, ce qui fait que son nombre de références ne doit jamais être 0).

En Python, la mémoire demandée est souvent constituée de petits blocs de mémoire. Ces petits blocs de mémoire seront libérés peu de temps après l'application. Puisque ces applications de mémoire ne sont pas destinées à créer des objets, elles ne le sont pas. mécanisme de pool de mémoire au niveau. Cela signifie que Python effectuera un grand nombre d'opérations malloc et gratuites pendant le fonctionnement, et basculera fréquemment entre le mode utilisateur et le mode noyau, ce qui affectera sérieusement l'efficacité d'exécution de Python. Afin d'accélérer l'efficacité d'exécution de Python, Python introduit un mécanisme de pool de mémoire pour gérer l'application et la libération de petits blocs de mémoire.

Mécanisme de pool de mémoire

Python fournit un mécanisme de récupération de place pour la mémoire, mais il place la mémoire inutilisée dans le pool de mémoire au lieu de la renvoyer au système d'exploitation.

Tous les objets de taille inférieure à 256 octets en Python utilisent l'allocateur implémenté par pymalloc, tandis que les objets volumineux utilisent le malloc du système. De plus, les objets Python, tels que les entiers, les nombres à virgule flottante et les listes, disposent de leurs propres pools de mémoire privés indépendants, et leurs pools de mémoire ne sont pas partagés entre les objets. Cela signifie que si vous allouez et libérez un grand nombre d'entiers, la mémoire utilisée pour mettre en cache ces entiers ne pourra plus être allouée aux nombres à virgule flottante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Apr 01, 2025 pm 11:15 PM

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

Quelles sont les bibliothèques Python populaires et leurs utilisations? Quelles sont les bibliothèques Python populaires et leurs utilisations? Mar 21, 2025 pm 06:46 PM

L'article traite des bibliothèques Python populaires comme Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask et Demandes, détaillant leurs utilisations dans le calcul scientifique, l'analyse des données, la visualisation, l'apprentissage automatique, le développement Web et H et H

Comment créer dynamiquement un objet via une chaîne et appeler ses méthodes dans Python? Comment créer dynamiquement un objet via une chaîne et appeler ses méthodes dans Python? Apr 01, 2025 pm 11:18 PM

Dans Python, comment créer dynamiquement un objet via une chaîne et appeler ses méthodes? Il s'agit d'une exigence de programmation courante, surtout si elle doit être configurée ou exécutée ...

Comment Uvicorn écoute-t-il en permanence les demandes HTTP sans servir_forever ()? Comment Uvicorn écoute-t-il en permanence les demandes HTTP sans servir_forever ()? Apr 01, 2025 pm 10:51 PM

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Apr 02, 2025 am 07:18 AM

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Que sont les expressions régulières? Que sont les expressions régulières? Mar 20, 2025 pm 06:25 PM

Les expressions régulières sont des outils puissants pour la correspondance des motifs et la manipulation du texte dans la programmation, améliorant l'efficacité du traitement de texte sur diverses applications.

See all articles