Сделать асинхронную программу многопоточной

Скрипты написаны асинхронно, но как сделать их многопочными, чтобы не запускать 10 терминалов, а один с 10 потоками?

from threading import Thread
import asyncio


async def test():
    print('start thread')
    await asyncio.sleep(5)
    print('stop thread')


async def main():
    for _ in range(5, 0, -1):
        thread = Thread(target=test)
        thread.start()


if __name__ == "__main__":
    asyncio.run(main())

возвращает ошибки

RuntimeWarning: coroutine 'test' was never awaited
  self._target(*self._args, **self._kwargs)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

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

Автор решения: Георгий Федосенко

vitidev, спасибо, что натолкнул на мысль

import time
import asyncio


async def test():
    print('начало')
    await asyncio.sleep(5)
    print('конец')


async def gen_tasks():
    tasks = []
    for i in range(3):
        tasks.append(asyncio.create_task(test()))
    for task in tasks:
        await task


if __name__ == "__main__":
    asyncio.run(gen_tasks())

ответ нашел здесь

Запуск несколько ассинхронных функций вместе на python

→ Ссылка