Поскольку я пытаюсь получить два разных вывода, запуская одну и ту же функцию с разными параметрами асинхронно, используя 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 секунды, можете ли вы предложить мне какие-либо изменения?
Заранее спасибо