Встречается на 3% собеседований по Python
В чем разница между кооперативной и вытесняющей многозадачностью в Python
В Python используется кооперативная многозадачность (через asyncio), где задачи добровольно передают управление, и вытесняющая (через потоки), где ОС решает, когда переключаться.
Кооперативная (asyncio):
- Задачи явно передают управление через
await - Легковесные, нет накладных расходов на переключение
- Одна блокирующая задача может заморозить весь цикл событий
python
async def task():
await asyncio.sleep(1) # Явная передача управленияВытесняющая (потоки):
- ОС сама переключает потоки
- Потоки могут выполняться параллельно на разных ядрах
- Есть накладные расходы на переключение контекста
- Риск race conditions (нуются блокировки)
python
from threading import Thread
def task():
time.sleep(1) # ОС может переключиться в любой моментГлобальная блокировка интерпретатора (GIL) ограничивает параллелизм потоков для CPU-bound задач. Для IO-bound задач оба подхода работают, но asyncio эффективнее.
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы