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

Как связаны GIL, многопоточность и вытесняющая многозадачность

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

Многопоточность в Python работает, но из-за GIL потоки выполняются не параллельно, а псевдопараллельно (через переключение контекста). Это вытесняющая многозадачность на уровне интерпретатора, но не на уровне процессора.

Пример с I/O-bound задачей (GIL не мешает, так как потоки освобождают его во время ожидания):

python
import threading
import time

def task():
    time.sleep(1)  # I/O операция

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

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

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

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

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

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