[python]LazyEvealuationは?



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値を用いた瞬間のみ関数を実行する.
ラーメンはお客様が来た時にラーメンを煮る方法です.