Ответ 1
Действительно короткая версия заключается в том, что в настоящее время python управляет памятью с помощью счетчика ссылок + схемы сбора меток марки & sweep cycle, оптимизированной для задержки (вместо пропускной способности).
Все это прекрасно, когда есть только один мутирующий поток, но в многопоточной системе вам нужно синхронизировать все время, когда вы изменяете refcounts, или же вы можете иметь значения "падать по трещинам" и синхронизация примитивы довольно дороги на современном оборудовании.
Если пересчеты не были изменены так часто, это не было бы проблемой, но в значительной степени каждая операция, которую вы выполняете в cpython, может привести к тому, что refcount изменится где-то, поэтому параметры являются либо GIL, либо refpounts with some kind (и буквально тратите почти все ваше время на синхронизацию), или откажитесь от системы пересчета для какого-то реального сборщика мусора.