Pythonでasyncとawaitキーワードを使用して非同期関数と非同期処理を行う

スポンサーリンク

Pythonでasyncとawaitキーワードを使用して非同期関数と非同期処理を行ってみます。

■今回の環境(Python)

今回のPythonはバージョン3.8.5を用いる。(Mac OS)

■asyncとawaitキーワードを使用して非同期関数と非同期処理を行う

では、早速asyncとawaitキーワードを使用して非同期関数と非同期処理を行うために、コードを書いていきます。

■コード

import asyncio

# 非同期関数
async def print_message(message):
    print("処理を開始します")
    await asyncio.sleep(1)  # 非同期に1秒待機
    print(message)
    print("処理が完了しました")

# イベントループの作成
loop = asyncio.get_event_loop()

# 非同期関数の実行
loop.run_until_complete(print_message("Hello, World!"))

# イベントループの終了
loop.close()

ますは、asyncioモジュールをインポートします。その後、print_messageという非同期関数が定義します。この関数は引数としてメッセージを受け取り、「処理を開始します」というメッセージをprint()で出力します。その後、asyncio.sleep(1)を使用して1秒間の非同期待機を行います。受け取ったメッセージをprint()で出力します。出力後、「処理が完了しました「というメッセージをprint()で出力します。

その後、asyncio.get_event_loop()を使用して、デフォルトのイベントループを取得します。取得したイベントループのrun_until_completeメソッドを使用して、print_message(“Hello, World!”)を非同期に実行します。

run_until_completeメソッドは、引数として渡された非同期関数が完了するまでイベントループを実行し続けます。イベントループがprint_messageという非同期関数の実行を処理します。イベントループが非同期関数の実行が完了した後、loop.close()を使用してイベントループを終了します。

■実行・検証

このスクリプトを「test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、ターミナルから実行してみます。

実行してみると、awaitキーワードによって処理が一時停止し、1秒間待機。その後、指定されたメッセージを出力させることができました。

 

コメント

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