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秒間待機。その後、指定されたメッセージを出力させることができました。
コメント