Junior — Middle
Comment la programmation asynchrone était-elle réalisée en Python avant la version 3.6, avant l'apparition de la construction async def?
sobes.tech IA
Réponse de l'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.