Skip to content

Python Coroutine

Python の Coroutine(コルーチン)は,非同期処理や協調的な並行処理を実現するための仕組み 簡単に言うと「途中で処理を一時停止し,後で再開できる関数」

>>> async def sleeping(sec):
... loop = asyncio.get_event_loop()
... print(f'start: {sec}秒待つよ')
... await loop.run_in_executor(None, time.sleep, sec)
... print(f'finish: {sec}秒待つよ')
... return sec
...
>>> async def m():
... return await asyncio.gather(
... sleeping(5),
... sleeping(1),
... sleeping(8),
... sleeping(3),
... sleeping(4)
... )
...
>>> asyncio.run(m())
start: 5秒待つよ
start: 1秒待つよ
start: 8秒待つよ
start: 3秒待つよ
start: 4秒待つよ
finish: 1秒待つよ
finish: 3秒待つよ
finish: 4秒待つよ
finish: 5秒待つよ
finish: 8秒待つよ
[5, 1, 8, 3, 4]