[python]LazyEvealuationは?
3843 ワード
Lazy Evaluationとは?
計算機プログラミングでは,緩和計算法(Lazy Evaluation)は計算を計算結果値を必要とするまで遅らせる方法である.
計算がゆったりしていれば不要な計算は行われないので、より速く実行でき、複合式を計算する際にエラー状態を回避し、無限の資料構造を記述し、予め定義されたものを使用せず、通常の関数で制御構造を定義することができます.
- 위키백과
「ウィキペディア」には辞書の意味が定義されていますが、簡単に例を挙げて説明します.あなたがラーメンを売っているレストランを経営している人だとします.
レストランでは10人で予約していて、1人1個のラーメンを注文し、合計10人分のラーメンを注文しました.
しかし、予約者からの電話で「何人が参加するのかわからない.「あるいは全員が参加しない」
そう言えば、売り手は2つの方法の中で1つを選ぶべきだ.
1つ目は10人分のラーメンを事前に用意して、お客さんが来たら食べられます.
2つ目は10人分のラーメンを用意して、お客さんが来たらすぐに煮てあげます.
予約が10人なので、何人来るか分からないので、2つ目の方法の方が準備が効率的だと思います.これがLazyEvaluationです.
Lazy Evaluationは、必要な計算を一切行わず、実際に使用するまで計算結果値の計算を後回しにするものです.
次は最初の方法のように早めにラーメンを煮る方法list理解です.
次に、2番目のメソッドジェネレータを使用してlazyを使用して評価した場合の相違を比較します.
import time
L = [1, 2, 3]
def print_iter(iter):
for element in iter:
print(element)
def lazy_return(num):
print("sleep 1s")
time.sleep(1)
return num
print("comprehension_list=")
comprehension_list = [ lazy_return(i) for i in L ]
print_iter(comprehension_list)
print("generator_exp=")
generator_exp = ( lazy_return(i) for in L )
print_iter(generator_exp)
その結果,理解を用いると,「lazy reutern」関数は3回前に実行され,値が生成され,1回出力される.
つまり、早めにラーメンを注文した分だけラーメンを煮て、一度に料理を出す方法です.
2つ目は不活性計算法を用い,generator exp値を用いた瞬間のみ関数を実行する.
ラーメンはお客様が来た時にラーメンを煮る方法です.
Reference
この問題について([python]LazyEvealuationは?), 我々は、より多くの情報をここで見つけました https://velog.io/@kho5420/Python-Lazy-Evaluation-이란テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol