Что будет если вызвать синхронную функцию в асинхронной?
Изменится ли скорость если вызвать в асинхронной функции синхронную?
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)