От чего защищает 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).