Я только что увидел этот раздел документации Unladen Swallow появился в Hacker News. По сути, инженеры Google говорят, что они не оптимистично относятся к удалению GIL. Тем не менее, похоже, что есть дискуссия о сборщике мусора, вкрапленной этим разговором о GIL. Может ли кто-нибудь объяснить мне отношение?
Что Python GIL имеет отношение к сборщику мусора?
Ответ 1
Действительно короткая версия заключается в том, что в настоящее время python управляет памятью с помощью счетчика ссылок + схемы сбора меток марки & sweep cycle, оптимизированной для задержки (вместо пропускной способности).
Все это прекрасно, когда есть только один мутирующий поток, но в многопоточной системе вам нужно синхронизировать все время, когда вы изменяете refcounts, или же вы можете иметь значения "падать по трещинам" и синхронизация примитивы довольно дороги на современном оборудовании.
Если пересчеты не были изменены так часто, это не было бы проблемой, но в значительной степени каждая операция, которую вы выполняете в cpython, может привести к тому, что refcount изменится где-то, поэтому параметры являются либо GIL, либо refpounts with some kind (и буквально тратите почти все ваше время на синхронизацию), или откажитесь от системы пересчета для какого-то реального сборщика мусора.
Ответ 2
Ответ тунца-рыбы в основном покрывает его. Если вы хотите получить более подробную информацию, было обсуждено, как удалить GIL без значительного влияния на подсчет ссылок здесь: http://mail.python.org/pipermail/python-ideas/2009-October/006264.html
Ответ 3
Я просто нашел другую точку зрения на эту тему здесь: http://renesd.blogspot.com/2009/12/python-gil-unladen-swallow-reference.html