От чего защищает GIL
Python
Middle
Без компании
От чего защищает GIL
Ответы
GIL (Global Interpreter Lock) — это механизм в CPython, который предотвращает одновременное выполнение байт-кода несколькими потоками в одном процессе.
**Основные защиты GIL:**
- **Безопасность памяти** — предотвращает race conditions при работе с объектами Python, так как только один поток может выполнять Python-код в любой момент.
- **Упрощение реализации** — делает CPython проще, так как не требует сложной синхронизации для управления внутренними структурами.
**Пример проблемы без GIL:**
```
import threading
counter = 0
def increment():
global counter
for _ in range(100000):
counter += 1
threads = [threading.Thread(target=increment) for _ in range(2)]
for t in threads:
t.start()
for t in threads:
t.join()
print(counter) # Может быть меньше 200000 из-за race condition
```
**Недостаток:** GIL ограничивает параллелизм в CPU-задачах, но не мешает I/O-операциям. Для истинного параллелизма используют процессы (`multiprocessing`) или альтернативные интерпретаторы (например, Jython, IronPython).