Maison >développement back-end >Tutoriel Python >Une compréhension simple du comptage de références Python et des références faibles (avec des exemples)

Une compréhension simple du comptage de références Python et des références faibles (avec des exemples)

不言
不言original
2018-09-18 15:31:201875parcourir

Cet article vous apporte une compréhension simple du comptage de références python et des références faibles (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Écrit devant :

La série précédente de sockets est terminée, principalement pour faire un résumé et un enregistrement de ce que j'ai appris.

Ensuite, je prévois d'écrire un serveur HTTP qui prend en charge la concurrence basée sur libevent. Parce que le maître du groupe d'étude avait déjà développé un serveur prenant en charge à la fois HTTP et WebSocket auparavant, je me suis senti très intéressé après l'avoir lu, j'ai donc acheté ce livre de programmation réseau pour le lire. Je prévois de me référer au sien pour écrire une version simplifiée,

ne prend en charge que HTTP. Une fois que j'ai fini de l'écrire, je peux le partager avec tout le monde. Bien qu'il ne puisse pas être utilisé dans un environnement de production, je pense qu'après avoir appris le code source, ce sera une grande amélioration pour moi.

Entrez ensuite le sujet :

Mettez d'abord l'exemple de code :

Une compréhension simple du comptage de références Python et des références faibles (avec des exemples)

Nous en créons un pour tester Le L'objet x comprend un constructeur et un destructeur.

L'objet x est initialisé pour la première fois et référencé par la variable a, donc le nombre de références ici est 1. Obtenez ensuite le nombre de références via getrefcount, qui devient ici 2, car appeler la fonction getrefcount elle-même est également une référence à a.

Ensuite, créez une référence faible via faibleref.ref(). Après avoir imprimé le nombre de références via getrefcount, il s'avère que le nombre n'a pas changé.

w() est une Cette phrase signifie déterminer si les deux instances sont exactement les mêmes, c'est-à-dire si elles occupent la même adresse mémoire.

Ensuite, nous utilisons del a pour déréférencer a à l'objet x. Notez que del ici ne recycle pas directement l'objet x, mais le déréférence. Nous savons qu'une fois que la référence d'une variable est 0, elle le sera. Recycler. L'objet x est donc recyclé après avoir appelé del.

Grâce au code précédent, nous pouvons voir que la méthode d'appel de références faibles est une méthode de type fonction. Cependant, vous pouvez utiliser un proxy pour appeler en utilisant des noms de variables.

Une compréhension simple du comptage de références Python et des références faibles (avec des exemples)

À ce stade, je crois que j'ai définitivement maîtrisé l'utilisation des références faibles. Mais à quoi sert exactement une référence faible ?

Comme beaucoup d'autres langages de haut niveau, Python dispose également d'un mécanisme de récupération de place. Chaque objet a un décompte de référence, et lorsque ce décompte atteint 0, l'objet peut être détruit en toute sécurité.

Comme un seul objet peut être recyclé à la fois, le comptage de références ne peut pas recycler les objets avec des références circulaires. Un ensemble d’objets qui se référencent les uns aux autres survivra pour toujours s’ils ne sont pas directement référencés par d’autres objets et s’ils sont inaccessibles.

Une fuite de mémoire se produira si une application continue à générer de tels groupes d'objets inaccessibles.

Les références faibles sont donc très appropriées pour gérer de tels scénarios de référence circulaires.

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

Articles Liés

Voir plus