イベントループ¶
コルーチンを実行
非同期関数(
async def
)は実行しても処理されないコルーチンの実態はジェネレータ
イベントループはコルーチンをイテレーションする
イベントループの取得¶
- asyncio.get_running_loop
現在のスレッドのイベントループを取得
- asyncio.get_event_loop
現在のイベントループを取得
asyncio.set_event_loop
が呼ばれていない場合は新しいイベントループを作成取得したループはカレントループとなる
より高レベルの asyncio.run を検討できる
- asyncio.set_event_loop
現在のスレッドのイベントループとして設定
- asyncio.new_event_loop
新しいイベントループオブジェクトを作成
asyncio.set_event_loop
でカレントループとなる
イベントループの処理¶
- loop.run_until_complete
Futureが完了するまで実行する
引数にコルーチンが渡された場合、
asyncio.Task
として実行するようにスケジュールされる
- loop.run_forever
stop
が呼び出されるまでイベントループを実行し続ける- loop.stop
イベントループを停止する
- loop.is_running
イベントループが実行中の場合は
True
を返す- loop.is_closed
イベントループがクローズされた場合は
True
を返す- loop.close
イベントループをクローズする
保留中のコールバックは破棄される
executorは終了を待たずに停止される
イベントループのファイナライズ¶
- coroutine loop.shutdown_asyncgens
デフォルトのexecutorの
aclose
をスケジュールするすべての非同期ジェネレータをファイナライズする
asyncio.run
では自動で実行される
- coroutine loop.shutdown_default_executor
デフォルトのexecutorのクローズをスケジュールする
ThreadPoolExecutor
に参加するのを待つasyncio.run
では自動で実行される