Какой лучший способ сделать задачи в python? - PullRequest
0 голосов
/ 03 мая 2020

Я хочу сделать программу, которая работает с несколькими задачами, каждая задача должна быть запускаемой, остановить и возобновить.

Мне нужно в любой момент остановить задачу и при необходимости удалить задачу. (поэтому я подумал, что библиотека 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()

есть ли лучший способ сделать этот тип работы?

...