memo

2015-08-24

asyncio.gather の実行順が不定だった

import asyncio

@asyncio.coroutine
def f(n):
    print(n)
    return n


loop = asyncio.get_event_loop()
results = loop.run_until_complete(asyncio.gather(f(1), f(2), f(3)))
print(results)

実行結果:

1
3
2
[1, 2, 3]

同じ future/coroutine を何度も実行してしまわないようにか、 一度 set に入れたものを実行していっているようで、 引数で渡した順番に実行されるとは限らないっぽい。