Je viens de voir this section of Unladen Swallow's documentation apparaître sur Hacker News. Fondamentalement, ce sont les ingénieurs de Google qui disent qu'ils ne sont pas optimistes quant à la suppression du GIL. Cependant, il semble qu'il y ait une discussion sur le collecteur d'ordures intercalé avec cette discussion sur le GIL. Quelqu'un pourrait-il m'expliquer la relation avec moi?Qu'est-ce que le GIL de Python a à voir avec le garbage collector?
Répondre
La version très courte est actuellement python gère la mémoire avec un comptage de référence + une marque & schéma de cycle de balayage, optimisé pour la latence (au lieu du débit). Ceci est très bien quand il n'y a qu'un seul thread de mutation, mais dans un système multi-thread, vous devez synchroniser toutes les fois que vous modifiez refcounts, ou vous pouvez avoir des valeurs "tomber dans les fissures", et les primitives de synchronisation sont assez coûteuses sur le matériel contemporain. Si les refcounts n'ont pas été changés si souvent, cela ne poserait pas de problème, mais à peu près toutes les opérations que vous effectuez dans cpython peuvent provoquer un changement de refonte quelque part, donc les options sont soit GIL, soit refcounts avec type de synchronisation (et littéralement passer presque tout votre temps sur la synchronisation), ou fossé le système de refcounting pour un genre de vrai garbage collector.
La réponse de Tuna-Fish couvre essentiellement. Si vous voulez plus de détails, il y a eu une discussion sur la façon dont le GIL pourrait être retirée sans avoir trop beaucoup d'effet sur le comptage de références ici: http://mail.python.org/pipermail/python-ideas/2009-October/006264.html
La suggestion dans ce lien était naïve. L'utilisation de compare-and-swap pour le comptage des références est trop lente. –
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
- 1. Qu'est-ce que le 'garbage collector'?
- 2. Python: comportement de garbage collector avec ctypes
- 3. Garbage Collector: Le CMS a-t-il abandonné le problème?
- 4. Fragments et garbage collector
- 5. .NET garbage collector mystery
- 6. garbage collector .NET
- 7. Garbage Collector vs Pool
- 8. Garbage collector Node.js
- 9. Java: Racing contre le garbage collector
- 10. LogManager et Garbage Collector
- 11. Le garbage collector appelle-t-il Dispose()?
- 12. Est-ce que Marshal.ReleaseComObject appelle le garbage collector?
- 13. Renderscript et garbage collector
- 14. v8 | initier manuellement le garbage collector
- 15. Xcode: Garbage Collector Setting
- 16. Garbage Collector Flash Player
- 17. Java garbage collector
- 18. Garbage collector Java
- 19. CFRetain une chaîne C avec garbage collector a permis
- 20. Eclipse: bouton Garbage Collector
- 21. requête concernant Garbage collector
- 22. android garbage collector lingo
- 23. Garbage Collector asp.net
- 24. Garbage collector JavaScript personnalisé
- 25. LibGdx Garbage Collector
- 26. Garbage Collector sortie inattendue
- 27. Crash de Webview avec Garbage Collector ON
- 28. Calmer un garbage collector excité
- 29. Android Garbage Collector et ArrayLists
- 30. Exécution mono-service avec garbage collector sgen
Eh bien, lisez sur le GIL. http://wiki.python.org/moin/GlobalInterpreterLock Comme vous pouvez le voir, tout est une question de gestion de la mémoire. –