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

В чем разница между кооперативной и вытесняющей многозадачностью в 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 эффективнее.

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

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

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

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