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

Какие ограничения накладывает GIL при разработке многопоточных приложений

GIL (Global Interpreter Lock) в Python предотвращает одновременное выполнение байт-кода несколькими потоками, что ограничивает истинный параллелизм в CPU-зависимых задачах.

Основные ограничения:

  • Потоки не ускоряют CPU-bound задачи (например, вычисления), так как GIL переключается между потоками.
  • Полезен только для I/O-bound задач (сетевые запросы, чтение файлов), где потоки освобождают GIL во время ожидания.

Пример:

python
import threading

def cpu_task():
    sum(range(10**6))  # CPU-bound - GIL мешает параллелизму

threads = [threading.Thread(target=cpu_task) for _ in range(4)]
for t in threads:
    t.start()
for t in threads:
    t.join()
# Время выполнения ~4x хуже, чем в multiprocessing

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

  • multiprocessing (каждый процесс имеет свой GIL).
  • Использование C-расширений (например, NumPy), которые отпускают GIL.
  • Асинхронность (asyncio) для I/O-bound задач.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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