Что будет если вызвать синхронную функцию в асинхронной?

Изменится ли скорость если вызвать в асинхронной функции синхронную?

    async def sad():
           wer = werti()
           print(wer)

    def werti():
         x = 80
         return x

Ответы (1 шт):

Автор решения: floydya

Скорость зависит от сложности функции, но лучше использовать async в async для предотвращения блокировки событийного цикла.

Если вызывать синхронную функцию внутри асинхронной - получим паузу в event loop'e, т.к. весь event loop будет ждать завершения синхронной функции.

Для того, чтобы не блокировать event loop синхронной функцией используют метод - loop.run_in_executor(...), документация.

Пример:

async def sad():
    loop = asyncio.get_event_loop()
    result = await loop.run_in_executor(None, werti)
    print(result)
→ Ссылка