Что Python GIL имеет отношение к сборщику мусора?

Я только что увидел этот раздел документации Unladen Swallow появился в Hacker News. По сути, инженеры Google говорят, что они не оптимистично относятся к удалению GIL. Тем не менее, похоже, что есть дискуссия о сборщике мусора, вкрапленной этим разговором о 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