Как избежать блокировки асинхронности в случае CPU-bound задач

Python Middle Без компании
Как избежать блокировки асинхронности в случае CPU-bound задач
Ответы
Для CPU-bound задач в асинхронном коде используйте `ProcessPoolExecutor` из `concurrent.futures`, так как asyncio плохо подходит для CPU-intensive операций. Пример: ``` 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()) ``` Ключевые моменты: - CPU-bound задачи выполняются в отдельных процессах - Основной event loop не блокируется - Для IO-bound задач лучше использовать чистый asyncio - Для Python 3.9+ можно использовать `asyncio.to_thread()` для легких задач