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.