Python Lambda で Await を使用する
非同期プログラミングは、マルチスレッドまたはマルチプロセッシングではありません。 代わりに、潜在的に長時間実行されるタスクを実行し、完了を待つのではなく、そのタスクがまだ実行されている間、プログラムが他のタスクに応答できるようにするのが並行プログラミングです。
非同期プログラミングでは、HTTP 要求のアクションまたはユーザーの選択に多くの時間がかかる可能性があるため、そのようなアクションがまだ実行されている間に他のタスクを実行できるようにすることは賢明です。
Python では、非同期プログラミングを実現するために、関数で async/await
機能を使用できますが、これは lambda
関数で行います。 この記事では、Python ラムダ関数で await
を使用する可能性について説明します。
Python ラムダに async/await ラムダ
がない
Python で非同期プログラミングを実行するには、並列プログラミングを可能にするために async/await
構文を使用する asyncio
と呼ばれる組み込みの高レベル パッケージが必要です。
非同期操作を作成するには、async
および await
キーワードを使用できます。
import asyncio
async def main():
print("Action One")
await asyncio.sleep(1)
print("Action Two")
asyncio.run(main())
出力:
Action One
Action Two
async
キーワードを main()
関数に適用し、await
キーワードを asyncio.sleep()
ステートメントに適用しました。 しかし、それを lambda
を介して無名関数に適用するにはどうすればよいでしょうか? 匿名または lambda
関数は名前なしで定義され、lambda
キーワードを使用してそれを実現します。
3 で割り切れない数値をリストから削除したいとします。 別の関数を取る filter()
メソッド (高階関数) を使用できます。
したがって、二度と使用しない可能性のある関数バインディングを定義する代わりに、lambda
キーワードを使用して無名関数を使用できます。
myNums = [1, 2, 3, 4, 5, 6, 7]
myNums = list(filter(lambda x: x % 3 == 0, myNums))
print(myNums)
出力:
[3, 6]
しかし、非同期機能を lambda
関数に追加する方法はありますか? 簡単な答えはノーです。
Python の開発者は、lambda
に async
構文を追加することを正当化する 重要なユース ケースはありません と述べています。
また、lambda
の命名は、lambda
関数の適切な使用法ではありません。 したがって、lambda
関数で機能的に使用するのは難しいでしょう。 さらに、lambda
関数を介して async
関数を渡すと、同期関数内で実行されます。
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn