GIL (global interpreter lock) Глобальная блокировка интерпретатора, который блокирует одновременное выполнение нескольких потов.

Гил запрещает потокам выполняться одновременно, когда выполняется 1 поток, гил блокирует все остальные.

Схематичное изображение работы потоков под GIL. Зелёный — поток, удерживающий GIL, красные — блокированные потоки

Схематичное изображение работы потоков под GIL. Зелёный — поток, удерживающий GIL, красные — блокированные потоки

Причины использования GIL:

Минусы

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