Я хочу сделать программу, которая работает с несколькими задачами, каждая задача должна быть запускаемой, остановить и возобновить.
Мне нужно в любой момент остановить задачу и при необходимости удалить задачу. (поэтому я подумал, что библиотека threading не годится, потому что я не могу немедленно уничтожить поток)
Я пытался выполнить Asyncio задач.
import asyncio
async def new_task():
await asyncio.sleep(2)
# ... do things
# stop inside task if necessary
asyncio.Task.current_task().cancel()
async def check_tasks():
tasks = []
# create tasks
for n in range(10):
task = await loop.create_task(new_task())
task.name = f'task - {n}'
tasks.append(task)
while tasks:
tasks = [t for t in tasks if not t.done()]
# I can stop task externally
# tasks[i].cancel()
loop = asyncio.get_event_loop()
loop.run_until_complete(check_tasks())
loop.close()
есть ли лучший способ сделать этот тип работы?