GIL (global interpreter lock) Глобальная блокировка интерпретатора, который блокирует одновременное выполнение нескольких потов.
Гил запрещает потокам выполняться одновременно, когда выполняется 1 поток, гил блокирует все остальные.
Схематичное изображение работы потоков под GIL. Зелёный — поток, удерживающий GIL, красные — блокированные потоки
Причины использования GIL:
Главный недостаток подхода обеспечения потокобезопасности при помощи GIL — это ограничение параллельности вычислений. GIL не позволяет достигать наибольшей эффективности вычислений при работе на многоядерных и мультипроцессорных системах[3]. Также использование нескольких потоков накладывает издержки на их переключение из-за эффекта конкуренции (потоки «пытаются» перехватить GIL). То есть многопоточное выполнение может занять большее время, чем последовательное выполнение тех же задач[4].