Python 如何才能在asyncio上异步运行`loop.run`,直到_complete()`本身?
在以下代码中:Python 如何才能在asyncio上异步运行`loop.run`,直到_complete()`本身?,python,python-asyncio,Python,Python Asyncio,在以下代码中: loop = asyncio.get_event_loop() l_x = map(async_func, data_x) l_y = map(async_func, data_y) l_z = map(async_func, data_z) x = loop.run_until_complete(asyncio.gather(*l_x)) y = loop.run_until_complete(asyncio.gather(*l_y)) z = loop.run_until_c
loop = asyncio.get_event_loop()
l_x = map(async_func, data_x)
l_y = map(async_func, data_y)
l_z = map(async_func, data_z)
x = loop.run_until_complete(asyncio.gather(*l_x))
y = loop.run_until_complete(asyncio.gather(*l_y))
z = loop.run_until_complete(asyncio.gather(*l_z))
async_func
包含I/O任务,需要更长的时间,因此我将使用asyncio
来同时运行它
但是,问题是,我发现它在第一个循环后阻塞了执行。运行\u直到\u complete()
,并且只有在l\u x
上的所有执行完成后,它才会进入第二个循环的执行。运行\u直到\u complete()
但我更希望同时运行所有结果,也不希望合并这三个结果,因为它们都不相关。在这种情况下,我仍然可以同时运行所有这些协程吗?您可以按如下方式将这些协程同时排队运行:
l1 = asyncio.gather(*l_x)
l2 = asyncio.gather(*l_y)
l3 = asyncio.gather(*l_z)
results = loop.run_until_complete(asyncio.gather(l1, l2, l3))
如果希望单独保留每个协同程序的结果,那么可以让每个协同程序将结果分配给某些类级实例变量