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

Как происходит переключение контекста

Переключение контекста в Python происходит при выполнении операций ввода-вывода, системных вызовов или при явном вызове await. Оно позволяет освободить поток для других задач, пока текущая ожидает завершения операции.

Пример с asyncio:

python
import asyncio

async def task1():
print("Task 1 started")
await asyncio.sleep(1) # Переключение контекста
print("Task 1 completed")

async def task2():
print("Task 2 started")
await asyncio.sleep(2) # Переключение контекста
print("Task 2 completed")

async def main():
await asyncio.gather(task1(), task2())

asyncio.run(main())

text

При `await asyncio.sleep()` управление передаётся обратно в event loop, который может запустить другую корутину. Это не блокирующая операция, в отличие от `time.sleep()`.  

В многопоточности переключение контекста управляется GIL и ОС, но из-за GIL Python не выполняет настоящий параллелизм потоков на CPU-bound задачах.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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