Что ты знаешь о 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()
```