Sobes.tech
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.