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

Почему GIL не позволяет реализовать настоящую многопоточность (multithreading) в Python

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

Основные причины:

  1. Безопасность памяти: GIL защищает структуры данных интерпретатора от гонки (race conditions).
  2. Упрощение реализации: CPython изначально проектировался с GIL, чтобы избежать сложной синхронизации.
  3. Ограничение производительности: Даже при наличии нескольких потоков, только один выполняет байт-код Python одновременно.

Пример:

python
import threading

def count():
    n = 0
    for _ in range(10_000_000):
        n += 1

threads = [threading.Thread(target=count) for _ in range(4)]
for t in threads:
    t.start()
for t in threads:
    t.join()

Здесь потоки не ускоряют выполнение из-за GIL. Для CPU-задач лучше использовать multiprocessing или асинхронность.

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

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

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

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