Pythonでasyncとawaitキーワードを使用してカウントダウンを作成する

スポンサーリンク

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秒ごとに表示されるカウントダウンを作成することができ、カウントダウンを実行できることを確認できました。

コメント

タイトルとURLをコピーしました