Как реализована асинхронность в Pyhon до версии 3.6 (до появления async def)
Python
Middle
Т-Банк
Как реализована асинхронность в Pyhon до версии 3.6 (до появления async def)
Ответы
До Python 3.6 асинхронность реализовывалась через генераторы и декоратор `@asyncio.coroutine`. Вместо `async def` использовались обычные функции с декоратором, а вместо `await` — `yield from`.
Пример:
```
import asyncio
@asyncio.coroutine
def old_style_coroutine():
print("Start")
yield from asyncio.sleep(1)
print("End")
loop = asyncio.get_event_loop()
loop.run_until_complete(old_style_coroutine())
```
Ключевые моменты:
- Декоратор `@asyncio.coroutine` помечал функцию как корутину
- `yield from` использовался для ожидания других корутин
- Работало на основе генераторов и event loop
- Совместимо с новым синтаксисом (можно смешивать старый и новый стиль)
Этот подход был менее читаемым и более подвержен ошибкам, чем современный синтаксис с `async/await`.