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