Есть ли способ отправить переменную для конкретной задачи c? - PullRequest
1 голос
/ 29 января 2020

Я хочу иметь возможность отправить переменную или что-то в заданную задачу c asyncio (или аналогичную), чтобы она могла пропустить спящую часть. Вот структура, которую я использую:

async def someFunction():
    x = 'something'
    variable_i_need = False
    asyncio.create_task(someLoop(x, variable_i_need))

async def someLoop(x, variable_i_need):
    while True:
        print(x)
        for i in range(60):
            if variable_i_need:
                break
            await asyncio.sleep(1)

async def someOtherFunction():
    variable_i_need = True
    #Send this to specific task running someLoop()

Есть ли какой-нибудь способ, которым я мог бы сделать это или что-то подобное, где я могу обновить одну задачу, используя тот же l oop, что и x количество других задач. Я могу сделать это с помощью глобальной переменной, но она обновит все задачи, а не одну.

1 Ответ

1 голос
/ 29 января 2020

Я бы использовал глобальный словарь,

скажем variable_i_need = {} с ключом = именем задачи и значением True или False

Тогда из somel oop я проверю против

if variable_i_need{x}: break

Затем используйте:

async def someOtherFunction(x):
    variable_i_need{x} = True
...