Запуск нескольких функций асинхронной блокировки одновременно – PythonPython

Программы на Python
Ответить
Anonymous
 Запуск нескольких функций асинхронной блокировки одновременно – Python

Сообщение Anonymous »

Я новичок в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»