【发布时间】:2020-03-12 15:02:18
【问题描述】:
所以目前我有如下所示的异步 python 代码(使用 asyncio):
while datetime.now() < time_limit:
last_start_run_time = datetime.now()
result = await asyncio.gather(
*(
get_output(output_source)
)
for output_source in output_sources
)
for output in res:
output_dict.update(my_output_dict)
if (datetime.now() - last_start_run_time).seconds < upper_bound_wait:
await asyncio.sleep(delay)
此代码的问题在于,它总是等待运行时间最长的 get_output 调用为所有输出源再次调用该函数。
我想知道如何重写此代码,使其在完成之前的运行后立即为每个 output_source 调用每个 get_output 调用(如果是在 upper_bound_wait 内),我还希望延迟是每个 get_output 函数调用,而不是在它完成所有函数调用之后。
如何使用 asyncio 来实现?
【问题讨论】:
标签: python python-3.x asynchronous async-await python-asyncio