Sobes.tech
Back to questions
Junior — Middle
75

Каким образом в Python осуществлялась асинхронность до версии 3.6, перед появлением конструкции async def?

Companies where asked
Т-БанкТ-Банк

Answer from AI

sobes.tech AI

До появления конструкции 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.