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

Что будет, если в event loop отправить CPU-bound задачу

Отправка CPU-bound задачи в event loop заблокирует его, так как asyncio работает в одном потоке и не может переключаться между задачами во время выполнения CPU-операций. Это приведёт к "зависанию" всего приложения.

Пример:

python
import asyncio

async def cpu_bound_task():
    # Долгая CPU-операция
    return sum(i * i for i in range(10**7))

async def main():
    await cpu_bound_task()  # Блокирует event loop
    print("Готово")

asyncio.run(main())  # Весь event loop "зависнет"

Решение:
Используйте loop.run_in_executor() для выноса CPU-bound задач в отдельный поток/процесс:

python
async def main():
    loop = asyncio.get_event_loop()
    await loop.run_in_executor(None, cpu_bound_task)  # Не блокирует event loop
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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