Знаешь ли что-нибудь про асинхронность
Python
Junior
Без компании
Знаешь ли что-нибудь про асинхронность
Ответы
Асинхронность в Python позволяет выполнять задачи без блокировки основного потока, используя механизмы `asyncio`, корутины и `async/await`.
**Ключевые моменты:**
- `async def` объявляет асинхронную функцию (корутину).
- `await` приостанавливает выполнение корутины, пока операция не завершится.
- `asyncio.run()` запускает асинхронный код.
**Пример:**
```
import asyncio
async def fetch_data():
print("Начало загрузки")
await asyncio.sleep(2) # Имитация долгой операции
print("Данные загружены")
async def main():
await asyncio.gather(fetch_data(), fetch_data()) # Параллельное выполнение
asyncio.run(main())
```
**Плюсы:**
- Эффективность для I/O-bound задач (сетевые запросы, работа с файлами).
- Меньше накладных расходов по сравнению с потоками.
**Ограничения:**
- Не подходит для CPU-bound задач (нужны процессы или threading).
- Требует поддержки библиотек (например, `aiohttp` вместо `requests`).