【非同期処理】async await ← 理解しよう

Python非同期処理AsyncAwaitプログラミング

12/24/2025


この記事について

この記事はこんな人におすすめです!

note
  • 非同期処理についてあまり知らない人
  • 初心者の人
  • なんとなく使っていて、意味まで分からない人

1.非同期処理って?

まず、非同期処理について少し知っておきましょう。
では、皆さんが今行っていることってどのくらいありますか?

  • 呼吸をする
  • 体温を維持する
  • 心臓を動かす

結構ありますね。これら全て同時に行っていることじゃないですか?
この同時に行うこと非同期処理と言います。

2.普通にプログラムを書いてみよう

まずはこのプログラムを見てください。

普通のプログラム
import time def do_kanji_homework(): print('Starting Kanji homework') time.sleep(4) # 漢字をする print('Kanji homework done') def do_math_homework(): print('Starting Math homework') time.sleep(2) # 算数をする print('Math homework done') def main(): do_kanji_homework() do_math_homework() main()

このプログラムは、漢字と算数の宿題をするプログラムです。
このプログラムを実行するとこうなります。

Starting Kanji homework # 4秒後 Kanji homework done Starting Math homework # 2秒後 Math homework done

これでは、1度に1つしか宿題ができません。これでは非効率です!
1度に2つの宿題が出来たら、その分時間がかかりません。
ということで、asyncとawaitの出番です!

3.同時に宿題をしよう

早速、asyncとawaitを使ってみましょう。
後でちゃんと意味は解説するので、安心してください。

非同期処理を使ったプログラム
import asyncio async def do_kanji_homework(): print('Starting Kanji homework') await asyncio.sleep(4) print('Kanji homework done') async def do_math_homework(): print('Starting Math homework') await asyncio.sleep(2) print('Math homework done') async def main(): await asyncio.gather( do_kanji_homework(), do_math_homework() ) asyncio.run(main())

色々増えましたが、これを実行すると...

Starting Kanji homework Starting Math homework # 2秒後 Math homework done # さらに2秒後 Kanji homework done

なんと宿題を2つ同時に開始し、4秒で全て終わらせることができました!

4.解説

asyncio

非同期処理をするためのライブラリです。

asyncio.sleep

time.sleep()の非同期バージョンだと思ってください。

asyncio.gather

非同期関数を同時に開始する。
さっきの例だと、do_kanji_homeworkdo_math_homework
同時に開始しています。

asyncio.run

main関数を実行するための物。

asyncとawait

async

非同期関数の頭につける物。
漢字、算数の宿題をする関数とmain関数に使われている。

await

非同期関数の中で非同期にしたい物の頭につける。
漢字、算数の宿題ならasyncio.sleepに、
mainならasyncio.gather

おわり

非同期処理やasync、awaitについての理解は深まりましたか?
非同期処理はプログラムの中でも重要なもので、
覚えておくととても便利です。
この記事を読んでも分からなかったなら、
実際に記事に書かれていたコードを実行してみたり、
自分なりに変えてみたりすると意味が分かるかもしれません。

最後まで読んでいただきありがとうございます。