Сделать асинхронную программу многопоточной
Скрипты написаны асинхронно, но как сделать их многопочными, чтобы не запускать 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())
ответ нашел здесь