Какие знаешь технические особенности async/await в Python
Python
Senior
Без компании
Какие знаешь технические особенности async/await в Python
Ответы
Async/await в Python основаны на концепции корутин (coroutines) и event loop. Ключевые особенности:
- **Неблокирующие операции** - async функции позволяют выполнять I/O операции без блокировки потока, переключаясь на другие задачи.
- **Event Loop** - управляет выполнением корутин, планируя их выполнение. Используется `asyncio.get_event_loop()` или `asyncio.run()`.
- **Синтаксис**:
```
async def fetch_data():
# асинхронная операция
await some_io_operation()
```
- **Ограничения**:
- Нельзя использовать await в обычных функциях
- Не все библиотеки поддерживают async (нужно использовать специальные версии типа aiohttp вместо requests)
- **Генерация событий** - корутины могут приостанавливать (yield) и возобновлять выполнение.
Пример:
```
import asyncio
async def main():
print('Hello')
await asyncio.sleep(1)
print('World')
asyncio.run(main())
```
Важно: async не делает код быстрее для CPU-bound задач, только для I/O-bound.