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

Как переключается контекст в multithreading (многопоточности)

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

Переключение происходит:

  1. По истечению кванта времени (обычно 5 мс)
  2. При операциях I/O (чтение/запись, сетевые запросы)
  3. При явном вызове time.sleep()

Пример:

python
import threading

def worker():
    print("Поток начал работу")
    # Здесь может произойти переключение контекста
    print("Поток завершил работу")

t1 = threading.Thread(target=worker)
t2 = threading.Thread(target=worker)
t1.start()
t2.start()

Из-за GIL настоящий параллелизм достигается только в мультипроцессинге (multiprocessing). Для CPU-bound задач лучше использовать процессы, для I/O-bound — потоки.

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

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

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

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