Встречается на собеседованиях • сегодня
Как избежать блокировки асинхронности в случае CPU-bound задач
Для CPU-bound задач в асинхронном коде используйте ProcessPoolExecutor из concurrent.futures, так как asyncio плохо подходит для CPU-intensive операций. Пример:
python
import asyncio
from concurrent.futures import ProcessPoolExecutor
def cpu_intensive_task(x):
# Тяжелые вычисления
return x * x
async def main():
with ProcessPoolExecutor() as pool:
result = await asyncio.get_event_loop().run_in_executor(
pool,
cpu_intensive_task,
10
)
print(result)
asyncio.run(main())
text
Ключевые моменты:
- CPU-bound задачи выполняются в отдельных процессах
- Основной event loop не блокируется
- Для IO-bound задач лучше использовать чистый asyncio
- Для Python 3.9+ можно использовать `asyncio.to_thread()` для легких задач
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы