Встречается на собеседованиях • сегодня

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

GIL (Global Interpreter Lock) — это механизм в CPython, который блокирует выполнение байт-кода одновременно в нескольких потоках. Он предотвращает конкурентное выполнение Python-кода, но разрешает параллельное выполнение операций ввода-вывода (I/O-bound задачи) и нативных расширений (C-код, который освобождает GIL).

Что блокирует GIL:

  • Выполнение Python-байткода в нескольких потоках одновременно (CPU-bound задачи).
  • Параллельную работу потоков для чисто Python-кода.

Что НЕ блокирует GIL:

  • Операции ввода-вывода (например, чтение файлов, сетевые запросы).
  • Нативные расширения (NumPy, Cython), если они явно отпускают GIL.

Пример:

python
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 блокирует параллельное исполнение.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы