Pythonでasyncとawaitキーワードを使用してカウントダウンを作成し実装してみます。
■今回の環境(Python)
今回のPythonはバージョン3.8.5を用いる。(Mac OS)
■asyncとawaitキーワードを使用してカウントダウンの作成
では、早速asyncとawaitキーワードを使用してカウントダウンの作成するために、コードを書いていきます。
■コード
import asyncio # 非同期関数 async def count_down(): print("カウントダウンを開始します") for i in range(10, 0, -1): print(i) await asyncio.sleep(1) # 非同期に1秒待機 print("カウントダウンが終了しました") # イベントループの作成と実行 loop = asyncio.get_event_loop() loop.run_until_complete(count_down())
まずimportでasyncioを呼び出します。その後、count_down関数が非同期関数として定義します。この関数はカウントダウンを行うための処理を含みます。
次にイベントループ(Event Loop)を作成します。イベントループは非同期処理を管理し、実行するためのメカニズムです。loop.run_until_complete(count_down())を呼び出すことで、count_down関数が非同期に実行されます。この呼び出しはイベントループに対して非同期処理を実行するよう指示します。count_down関数が実行されると「カウントダウンを開始します」というメッセージがprint()を用いて出力されます。
forループが開始され、10から1までの数字が1秒ごとに表示されます。print(i)の部分で現在のカウントダウンの数が表示されます。具体的にはiを10に初期化します。ループの本体であるprint(i)が実行され、現在のiの値である10が表示されます。 iの値が1減少します(i -= 1)。 上記の手順が9回繰り返され、iの値が9、8、7、6、5、4、3、2、1と順に表示されます。 iの値が0になると、ループが終了します。次にawait asyncio.sleep(1)によって、非同期に1秒待機します。これにより、他の非同期タスクが実行される余地が生まれます。
1秒の待機が終了すると、次のループが実行され、次の数が表示されます。これが10から1まで繰り返されます。カウントダウンが終了すると「カウントダウンが終了しました」というメッセージがprint()を用いて出力されます。そして、イベントループが完了し、プログラムが終了します。
■実行・検証
このスクリプトを「countdown_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、ターミナルから実行してみます。
実行してみると、asyncとawaitキーワードを使用して、10から1までの数字が1秒ごとに表示されるカウントダウンを作成することができ、カウントダウンを実行できることを確認できました。
コメント