本当の非同期メッセージループではなく、スレッドをバックグラウンドで実行するのに気にしない場合は、concurrent.futuresモジュールを参照してください。これはPython3の標準ですが、Python 2のバックポートが利用できます。
バックグラウンドで実行するエグゼキュータにコールを送信できます。後で結果を処理するか、呼び出しが完了したら結果ハンドラを処理する結果コールバックをバインドします。いくつかのコード例:あなたは、反復を行う非同期メソッドを定義するイベントループに登録して、イベントループを開始する必要があります
import concurrent.futures as futures
import time
def handle_result(future):
print("Result:", future.result())
def slow_function(argument):
time.sleep(2)
return argument
with futures.ThreadPoolExecutor() as executor:
async1 = executor.submit(slow_function, 1)
async1.add_done_callback(handle_result)
async2 = executor.submit(slow_function, 2)
async2.add_done_callback(handle_result)
async3 = executor.submit(slow_function, 3)
async3.add_done_callback(handle_result)
time.sleep(3)
。あなたのプログラムが応答を待っている間に何かをしなければ、なぜ非同期にするのですか? –
@ToreEschliman私は実際にAWSでバックエンドをテストし、Pythonでbotoを使用してAWS関数を呼び出しています。私はバックエンドを非同期的にテストするのは現実世界のテストのように思えます。 –
'client.invoke'が使用するライブラリは、あなたが使用できるイベントループを提供する必要があります。あなたはPython 3にいますよね? –