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

Как избежать блокировки асинхронности в случае 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()` для легких задач
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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