Как можно асинхронно проводить операции в рамках одного процесса
Python
Junior
Без компании
Как можно асинхронно проводить операции в рамках одного процесса
Ответы
В Python для асинхронных операций в одном процессе используется модуль `asyncio`. Он позволяет писать конкурентный код с синтаксисом async/await. Основные компоненты:
- **Корутины** - функции, объявленные с `async def`
- **Event Loop** - управляет выполнением корутин
- **Awaitables** - объекты, которые можно использовать с `await`
Пример:
```
import asyncio
async def fetch_data():
print("Начало загрузки")
await asyncio.sleep(2) # Имитация I/O операции
print("Данные загружены")
return {"data": 123}
async def main():
task1 = asyncio.create_task(fetch_data())
task2 = asyncio.create_task(fetch_data())
await task1
await task2
asyncio.run(main())
```
Ключевые моменты:
- `asyncio.sleep()` имитирует I/O операцию без блокировки
- `create_task()` запускает корутину конкурентно
- `await` приостанавливает выполнение корутины, пока операция не завершится
- Event Loop переключается между задачами во время ожидания
Этот подход эффективен для I/O-bound задач, но не для CPU-bound операций.