Maison  >  Article  >  développement back-end  >  Qu’est-ce que la destruction d’objets Python ? Quel est le mécanisme de destruction d'objets (garbage collection) en python ?

Qu’est-ce que la destruction d’objets Python ? Quel est le mécanisme de destruction d'objets (garbage collection) en python ?

乌拉乌拉~
乌拉乌拉~original
2018-08-20 14:38:401902parcourir

Dans cet article, nous en apprendrons davantage sur la destruction d'objets python (garbage collection). Pour ceux qui viennent d'entrer en contact avec le langage de programmation python, ils devraient en savoir moins sur la destruction d'objets python (garbage collection), et je ne le fais pas. en savoir beaucoup sur la collecte des déchets Python. Mais cela n'a pas d'importance. Dans le prochain article, nous découvrirons la destruction d'objets python (garbage collection) et le mécanisme de garbage collection en python.

Destruction d'objets Python (collecte des déchets)

Python utilise une technique simple appelée comptage de références pour suivre et recycler les déchets.

En interne, Python enregistre le nombre de références de chaque objet utilisé.

Une variable de suivi interne, appelée compteur de référence.

Lorsqu'un objet est créé, un décompte de références est créé Lorsque l'objet n'est plus nécessaire, c'est-à-dire lorsque le décompte de références de l'objet devient 0, il est récupéré. Cependant, le recyclage n'est pas « immédiat ». L'interpréteur recyclera l'espace mémoire occupé par les objets poubelles au moment opportun.

a = 40      # 创建对象  <40>
b = a       # 增加引用, <40> 的计数
c = [b]     # 增加引用.  <40> 的计数

del a       # 减少引用 <40> 的计数
b = 100     # 减少引用 <40> 的计数
c[0] = -1   # 减少引用 <40> 的计数

Le mécanisme de récupération de place cible non seulement les objets avec un nombre de références de 0, mais peut également gérer les références circulaires. Une référence circulaire se produit lorsque deux objets se réfèrent l’un à l’autre, mais qu’aucune autre variable ne s’y réfère.

Dans ce cas, le comptage de références seul ne suffit pas. Le garbage collector de Python est en fait un compteur de références et un garbage collector cyclique. En plus du comptage de références, le garbage collector examine également les objets qui ont reçu une grande quantité d'objets (et ceux qui n'ont pas été détruits par le comptage de références). Dans ce cas, l’interprète fera une pause et tentera de nettoyer toutes les boucles non référencées.

Analyse d'instance

Destructeur __del__, __del__ est appelé lorsque l'objet est détruit Lorsque l'objet n'est plus utilisé, la méthode __del__ exécute :

# !/usr/bin/python
# -*- coding: UTF-8 -*-
class Point:
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y
    def __del__(self):
        class_name = self.__class__.__name__
        print class_name, "销毁"
        
pt1 = Point()
pt2 = pt1
pt3 = pt1
print id(pt1), id(pt2), id(pt3)  # 打印对象的id
del pt1
del pt2
del pt3
L'exemple de résultats d'exécution ci-dessus est le suivant :

3083401324 3083401324 3083401324Point 销毁
(Remarque : vous devez généralement définir une classe dans un fichier séparé,)

C'est tout pour cet article. tout le contenu décrit, cet article présente principalement les connaissances sur la

destruction d'objets python (garbage collection) . J'espère que vous pourrez utiliser les informations pour comprendre ce qui est dit ci-dessus et les exemples donnés. J'espère que ce que j'ai décrit dans cet article vous sera utile et vous facilitera l'apprentissage de Python.

Pour plus de connaissances connexes, veuillez visiter la colonne

Tutoriel Python du site Web php chinois.

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:
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