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

Как GIL влияет на выполнение кода

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

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

  • Многопоточные Python-программы не могут эффективно использовать многоядерные процессоры для CPU-задач.
  • Потоки полезны только для I/O-bound задач (сетевые запросы, чтение файлов).
  • Для CPU-bound задач лучше использовать multiprocessing или асинхронные подходы.

Пример:

python
import threading

def cpu_task():
    sum(range(10**7))  # CPU-bound операция

# Запуск двух потоков (не ускорит выполнение из-за GIL)
t1 = threading.Thread(target=cpu_task)
t2 = threading.Thread(target=cpu_task)
t1.start(); t2.start()
t1.join(); t2.join()

Альтернативы: multiprocessing, asyncio, C-расширения (например, numpy обходит GIL).

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

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

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

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