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

В какой момент происходит переключение контекста

Переключение контекста в Python происходит при выполнении операций ввода-вывода (I/O-bound), системных вызовов или при явном вызове await в асинхронном коде. В синхронном коде GIL (Global Interpreter Lock) предотвращает параллельное выполнение байткода, но поток может быть приостановлен для других потоков.

Пример с asyncio:

python
import asyncio

async def task():
    print("Start task")
    await asyncio.sleep(1)  # Точка переключения контекста
    print("End task")

async def main():
    await asyncio.gather(task(), task())

asyncio.run(main())

Ключевые моменты:

  1. При await управление возвращается в event loop
  2. При I/O операциях (сеть, файлы)
  3. При вызове yield в генераторах
  4. При достижении кванта времени в потоках (обычно ~5ms)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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