Какую проблему создает GIL в Python

Python Senior Без компании
Какую проблему создает GIL в Python
Ответы
GIL (Global Interpreter Lock) — это мьютекс, который защищает доступ к объектам Python, предотвращая одновременное выполнение байт-кода несколькими потоками. Основная проблема — ограничение параллелизма в CPU-зависимых задачах. **Проблемы:** - Многопоточные программы не ускоряются на многоядерных CPU, так как только один поток исполняется в любой момент. - Вычислительные задачи (например, обработка чисел) страдают, в отличие от I/O-операций, где GIL менее критичен. **Пример:** ``` import threading def count(): n = 0 for _ in range(10_000_000): n += 1 # Однопоточный вариант count() # ~0.5 сек # Многопоточный (2 потока) t1 = threading.Thread(target=count) t2 = threading.Thread(target=count) t1.start(); t2.start() t1.join(); t2.join() # ~1 сек (нет ускорения) ``` **Обходные пути:** - Использование процессов (`multiprocessing`). - Вынос тяжелых вычислений в C-расширения (с освобождением GIL). - Асинхронность (для I/O).