asyncio
asyncio は I/O 操作(ファイル読み書き、ネットワーク通信、スリープ)の間に他の処理を並行できる。
asyncio はシングルスレッドで動作する。
I/O 操作を含まない処理は asyncio では向いていない。スリープなしの無限ループとかは threading でやること。
コルーチン
async defで定義した関数はコルーチンと呼ぶ。
コルーチンはasyncio.run(func())で呼ぶことができる。
1
2
3
4
5
6
7
8
9
10
11
12
13 | async def example_coroutine():
print("Start")
await asyncio.sleep(1) # 非同期で1秒待機
print("End")
async def main():
print("Hi")
await asyncio.create_task(example_coroutine())
print("Bye")
if __name__ == "__main__":
# asyncioではトップレベルawaitは許可されていないため、main関数自体をコルーチン化する
asyncio.run(main())
|