Junior — Middle
¿Cómo se realizaba la asincronía en Python antes de la versión 3.6, antes de la aparición de la construcción async def?
sobes.tech AI
Respuesta de la IA
До появления конструкции async def в Python 3.5 и её улучшений в 3.6, асинхронность реализовывалась с помощью модуля asyncio, который использовал корутины на основе генераторов. Вместо async def применялись генераторы с ключевым словом yield from для приостановки и возобновления выполнения.
Основные моменты:
- Корутины объявлялись как обычные генераторы с
yieldилиyield from. - Для запуска событийного цикла использовался
asyncio.get_event_loop()и методыrun_until_complete(). - Для асинхронного ожидания использовался
yield fromвместоawait.
Пример корутины до async/await:
import asyncio
def hello():
print('Hello')
yield from asyncio.sleep(1)
print('World')
loop = asyncio.get_event_loop()
loop.run_until_complete(hello())
loop.close()
В современных версиях код стал более читаемым благодаря async def и await.