Python для профессионаловОткрытые материалыGIL в Python: потоки, процессы и производительность

GIL в Python: потоки, процессы и производительность

Уроки курсаGIL в Python: потоки, процессы и производительность

GIL — global interpreter lock в обычной сборке CPython. Он ограничивает одновременное выполнение Python-байткода: в один момент его исполняет один поток внутри процесса. Это упрощает часть внутреннего управления памятью интерпретатора, но влияет на масштабирование CPU-bound кода потоками.

GIL не означает, что потоки бесполезны. Во время многих блокирующих операций ввода-вывода и внутри части нативных библиотек блокировка освобождается. Поэтому несколько потоков могут эффективно обслуживать сетевые запросы или файлы, пока другие ждут.

Также GIL не является общей блокировкой ваших данных. Составные операции над бизнес-состоянием всё равно требуют lock, queue или другого механизма синхронизации.