Я новичок в Python и сопрограммах, я пытаюсь использовать библиотеку asyncio Python для параллельной обработки функции блокировки. Я использую Python 3.8.6. У меня есть функция блокировки, которая принимает входные данные, отличные от входных данных массива, мне нужно, чтобы функции блокировки для каждого входа выполнялись параллельно.
Например, если это время, затраченное на каждая функция для завершения:
Код: Выделить всё
blocking_function(5) - takes 5 seconds
blocking_function(3) - takes 3 seconds
blocking_function(2) - takes 2 seconds
Я пробовал это, но они по-прежнему выполняются последовательно:
Код: Выделить всё
input = [5,3,2]
async def main():
tasks = [asyncio.create_task(blocking_function(input)) for input in inputs]
result = await asyncio.gather(*tasks)
print(result)
При этом ошибок не возникает, но функция выполняется последовательно, а не параллельно. Эта реализация занимает 8 секунд. Как мне заставить их выполняться параллельно, чтобы это выполнялось за 5 секунд?
Подробнее здесь:
https://stackoverflow.com/questions/788 ... sly-python