Что ты знаешь о GIL в Python

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