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

Как GIL влияет на Python

GIL (Global Interpreter Lock) — это механизм в CPython, который предотвращает одновременное выполнение байт-кода несколькими потоками. Это означает, что даже в многопоточных приложениях только один поток может выполняться в любой момент времени.

Основные последствия GIL:

  1. Ограничение параллелизма — многопоточные программы не могут эффективно использовать несколько ядер CPU для CPU-задач.
  2. Проблемы с производительностью — CPU-интенсивные задачи в потоках выполняются последовательно.
  3. Не влияет на I/O-операции — потоки, ожидающие I/O (сеть, диск), освобождают GIL, позволяя другим потокам работать.

Обходные пути:

  • Использование процессов (multiprocessing) вместо потоков.
  • Вынос CPU-задач в C-расширения (где GIL можно отпустить вручную).
  • Альтернативные реализации Python (Jython, IronPython) без GIL.

Пример:

python
import threading

def cpu_task():
    sum(range(10**6))  # CPU-интенсивная операция

# Запуск в потоках (не ускорится из-за GIL)
t1 = threading.Thread(target=cpu_task)
t2 = threading.Thread(target=cpu_task)
t1.start(); t2.start()
t1.join(); t2.join()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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