Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何才能在asyncio上异步运行`loop.run`,直到_complete()`本身?_Python_Python Asyncio - Fatal编程技术网

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))
如果希望单独保留每个协同程序的结果,那么可以让每个协同程序将结果分配给某些类级实例变量