Check

GIL и многопоточность в CPython

Python Senior Яндекс
Что такое GIL (Global Interpreter Lock) в CPython, как он влияет на многопоточность и в каких случаях потоки в Python всё ещё полезны?
Ответы
GIL и потоки
GIL — глобальная блокировка интерпретатора CPython, которая позволяет в каждый момент времени исполняться только одному байткоду Python на процесс. Это упрощает реализацию сборщика мусора и делает многие C-расширения проще и безопаснее. Из-за GIL потоки не масштабируются по CPU-bound задачам: несколько потоков, активно считающих на Python, будут по сути конкурировать за один интерпретатор. Однако потоки полезны для I/O-bound задач (сетевые запросы, дисковый ввод-вывод, ожидание ответов), так как в моменты ожидания интерпретатор освобождает GIL и другой поток может выполняться. Для CPU-bound задач лучше использовать `multiprocessing` или внешние C/NumPy реализации.