Обычно event loop запускают через asyncio.run, а конкурентные корутины оформляют как Task. Управлять циклом вручную для простого приложения не требуется.
Напишите пример взаимодействия с event loop в Python.
Обычно event loop запускают через asyncio.run, а конкурентные корутины оформляют как Task. Управлять циклом вручную для простого приложения не требуется.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Обычно event loop запускают через asyncio.run, а конкурентные корутины оформляют как Task. Управлять циклом вручную для простого приложения не требуется.
Пример запуска двух ожиданий одновременно:
import asyncio
async def work(value):
await asyncio.sleep(0.1)
return value * 2
async def main():
loop = asyncio.get_running_loop()
started = loop.time()
tasks = [asyncio.create_task(work(x)) for x in (1, 2)]
result = await asyncio.gather(*tasks)
print(result)
print(loop.time() - started)
asyncio.run(main())
Результат — [2, 4]; время зависит от планировщика и окружения, поэтому не обещается ровно 0,1 секунды. В уже работающем loop вызывайте await main(), а не вложенный asyncio.run.