AZ
Size: a a a
AZ
AZ
МЧ
MK
MK
MK
МЧ
MK
МЧ
MK
МЧ
MK
MK
МЧ
МЧ
E
async def test_iterable_gather():Суть в том, что в Python 3.6 gather не сохраняет порядок списка.
data = [1, 2, 3, 4, 5, 6, 7, 8]
async def aiter(iterable):
for v in iterable:
yield v
aiterable = aiter(data)
aiterables = [aiterable] * 8
values = await asyncio.gather(
*[it.__anext__() for it in aiterables],
return_exceptions=True)
assert values == data
(test_iterable_gather)
[3, 7, 8, 6, 5, 4, 1, 2] != [1, 2, 3, 4, 5, 6, 7, 8]
Expected :[1, 2, 3, 4, 5, 6, 7, 8]
Actual :[3, 7, 8, 6, 5, 4, 1, 2]
E
E
If all awaitables are completed successfully, the result is an aggregate list of returned values. The order of result values corresponds to the order of awaitables in aws.
__anext__()
выполняется как угодно. Это, наверное, логично. Но интересно, почему работает в Py37+, они добавили какие-то дополнительные проверки для гарантии сохранения порядка списка даже для такого случая?p
MV