Запуск асинхронных функций

Скажите, пожалуйста, каким правильно использовать запуска функций в асинхронном варианте? Есть список с вложенными списками. Где каждый список представляет из себя будущие значения для функции.

c = [[121, 'yes', 5],[345, 'no', 1]]

sphere = 121
dart = 'yes'
number = 5

Есть функция:

def test(sphere, dart, nubmer)

Я бы хотел совершить следующие действия

for element in c:
    sphere, dart, number = c[0], c[1], c[2]
    #дальше мне надо запускать функцию в асинхронном режиме.
    #Как мне сделать так, чтобы она сама завершалась? Это нужно прописывать в самой функции?
    #Или же надо останавливать поток непосредственно после каждого элемента итерации?




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

Автор решения: 6 crimes

Возможно, данное решение подойдёт для Вас:

import asyncio

async def test(sphere, dart, number): # Поменять def на async def.
    # Do Something.
    return

async def task_starter(input_array):
    for element in input_array:
        asyncio.create_task(test(element[0], element[1], element[2]))

loop = asyncio.get_event_loop()
future = asyncio.gather(coro_starter(c))
loop.run_forever() 

В таком случае будет ожидаться завершение работы Вашей функции.

→ Ссылка