Сделай свою программу асинхронной. Асинхронным методам для выполнения требуется работающий цикл-реактор (loop в терминологии asyncio). Этот цикл занимает поток, и все асинхронные корутины выполняются в этом потоке. Без него ничего не выйдет.
Гипотетически можно запустить такой цикл в отдельном потоке и держать асинхронный код там. Но честно, лучше попробовать сделать свою программу асинхронной, если это возможно (т.е. если нет конфликтующих вечных циклов, как в GUI).