Что блокирует GIL в Python

Python Junior Без компании
Что блокирует GIL в Python
Ответы
GIL (Global Interpreter Lock) — это механизм в CPython, который блокирует выполнение байт-кода одновременно в нескольких потоках. Он предотвращает конкурентное выполнение Python-кода, но разрешает параллельное выполнение операций ввода-вывода (I/O-bound задачи) и нативных расширений (C-код, который освобождает GIL). **Что блокирует GIL:** - Выполнение Python-байткода в нескольких потоках одновременно (CPU-bound задачи). - Параллельную работу потоков для чисто Python-кода. **Что НЕ блокирует GIL:** - Операции ввода-вывода (например, чтение файлов, сетевые запросы). - Нативные расширения (NumPy, Cython), если они явно отпускают GIL. Пример: ``` import threading def cpu_bound_task(): # Этот код будет выполняться последовательно из-за GIL result = sum(i * i for i in range(10**6)) threads = [threading.Thread(target=cpu_bound_task) for _ in range(4)] for t in threads: t.start() for t in threads: t.join() ``` Здесь потоки не ускорят выполнение, так как GIL блокирует параллельное исполнение.