Как запустить одну и ту же функцию с разными параметрами асинхронно, используя asyncio в python - PullRequest
0 голосов
/ 29 апреля 2020

Поскольку я пытаюсь получить два разных вывода, запуская одну и ту же функцию с разными параметрами асинхронно, используя asyncio в python.

Пример:

import asyncio
import time


async def async_generate(sleep_time):
    s = time.perf_counter()
    await asyncio.sleep(0)
    result = generate(sleep_time)
    elapsed = time.perf_counter() - s
    print(f"segment  executed in {elapsed:0.2f} seconds.")
    return result


def generate(sleep_time):
    time.sleep(sleep_time)
    return sleep_time


async def main():
    task1 = asyncio.ensure_future(async_generate(1))
    task2 = asyncio.ensure_future(async_generate(2))
    await asyncio.gather(task1,task2)
    return task1.result(), task2.result()




loop = asyncio.get_event_loop()
s = time.perf_counter()
tasks = loop.run_until_complete(main())
print(tasks)
elapsed = time.perf_counter() - s
print(f"final executed in {elapsed:0.2f} seconds.")
loop.close()

Вывод:

segment  executed in 1.00 seconds.
segment  executed in 2.00 seconds.
(1, 2)
final executed in 3.00 seconds.

В приведенном выше примере, ожидая 2 секунды для завершения выполнения кода, но за 3 секунды, можете ли вы предложить мне какие-либо изменения?

Заранее спасибо

...