python сделать синхронную функцию асинхронной

Есть долгая функция long_sync_func()

Как ее выполнить асинхронно, чтоб можно было это запустить в цикле событий?

Есть вариант сделать асинхронное выполнение через threading.Thread, но мне нужно, чтоб можно было применить await, например:

async def new_function():
    # do smth
    await make_function_async(long_sync_func)
    # do smth

Вот как реализовать эту make_function_async?

UPD

Пришел на ум вот такой костыль, насколько так делать правильно?

import asyncio
from threading import Thread

class Runner(Thread):
    def __init__(self, func, *args, **kwargs):
        super().__init__()
        self.func = func
        self.args = args
        self.kwargs = kwargs
    
    def run(self):
        self.result = self.func(*self.args, **self.kwargs)


async def make_async(func, *args, **kwargs):
    r = Runner(func, *args, **kwargs)
    r.start()
    while r.is_alive():
        await asyncio.sleep(0)

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