Встречается на собеседованиях • сегодня
Что будет, если в 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
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы