11
votes

Qu'est-ce que Gil de Python a à voir avec le collecteur des ordures?

Je viens de voir Cette section de la documentation de l'hirondelle de malédend montez sur des nouvelles du pirate de hacker. Fondamentalement, ce sont les ingénieurs de Google disant qu'ils ne sont pas optimistes quant à la suppression du gil. Cependant, il semble qu'il y ait une discussion sur le collectionneur des ordures entrecoupé avec cette conversation sur le gil. Quelqu'un pourrait-il m'expliquer la relation avec moi?


1 commentaires

Eh bien, lisez le gil. wiki.python.org/moin/globalinterpreterlock Comme vous pouvez le constater, il s'agit de la gestion de la mémoire.


3 Réponses :


18
votes

La version vraiment courte est que Python gère actuellement la mémoire avec un comptage de référence + un schéma de collecteur de cycles de marque et de balayage, optimisé pour la latence (au lieu du débit).

Tout cela est bien lorsqu'il n'y a qu'un seul fil de mutation, mais dans un système multi-threadé, vous devez synchroniser tous les temps que vous modifiez refcounts, sinon vous pouvez avoir des valeurs "automne auge les fissures" et la synchronisation Les primitives sont assez chères sur le matériel contemporain.

Si Refcounts n'a pas changé si souvent, cela ne poserait pas un problème, mais à peu près chaque opération que vous faites à CPPHon peut provoquer une modification de référence quelque part, de sorte que les options sont soit gil, faire des refcounts avec une sorte de la synchronisation (et passez littéralement presque tout votre temps sur le synchronisation), ou fossé le système refcounting pour une sorte de véritable collecteur à ordures.


0 commentaires

1
votes

La réponse du thon-poisson couvre essentiellement. Si vous voulez plus de détails, il y avait une discussion sur la manière dont la gil peut être supprimée sans avoir une grande partie d'un effet sur le comptage de référence ici: http://mail.python.org/pipermail/python-ideas/2009-october/006264.html


1 commentaires

La suggestion dans ce lien était naïve. L'utilisation de la comparaison et du swap pour référence est trop lente.



1
votes

Je viens de trouver un autre point de vue sur ce sujet ici: http://renesd.blogspot.com/2009/12/python-gil-unladen-swallow-reference.html


0 commentaires