Вопросы к Поиску с Алисой
Глобальная блокировка интерпретатора (GIL) в CPython — это механизм, который обеспечивает безопасную работу с потоками. habr.com Он предотвращает одновременное выполнение байт-кодов Python несколькими собственными потоками. stackoverflow.com
Работа GIL следующая: прежде чем какой-то код выполняется в своём цикле вычисления кадра, GIL блокируется его потоком. onreader.mdl.ru По окончанию выполнения конкретного кода операции GIL высвобождается. onreader.mdl.ru Это означает, что в любой заданный момент времени только один поток способен исполнять некую операцию байт-кода. onreader.mdl.ru
Чтобы позволить другому потоку выполнить код, когда поток, удерживающий GIL, ожидает выполнения операции ввода/вывода, в CPython все операции ввода/вывода реализованы с использованием паттерна «освобождение-выполнение-захват»: habr.com
Также некоторые модули расширения, как стандартные, так и сторонних производителей, разработаны таким образом, чтобы освобождать GIL при выполнении задач с высокой вычислительной нагрузкой, таких как сжатие или хеширование. stackoverflow.com Кроме того, GIL всегда освобождается при выполнении ввода-вывода. stackoverflow.com