Lazy Evaluation
1. What is Lazy Evaluation
1.ウィキペディア
計算機プログラミングでは,緩和計算法(Lazy evaluation)は計算を計算結果値を必要とするまで遅らせる方法である.遅延計算法と最小計算法の2つの関連項目がある.
計算がゆったりしていれば不要な計算は行われないので、より速く実行でき、複合式を計算する際にエラー状態を回避し、無限の資料構造を記述し、予め定義されたものを使用せず、通常の関数で制御構造を定義することができます.
ゆとりのある計算方法を使用する言語は、「名前で呼び出す」または「必要に応じて呼び出す」を使用する計算ポリシーに分けられます.ハスケルのような実際の緩和言語の多くは、パフォーマンスの理由で「必要に応じて呼び出す」ポリシーを使用しています.
しかし,理論的にゆとりのある計算方法を示しており,「名前で呼ぶ」ことも容易である.
ゆとりのある計算法とは反対の計算法にはせっかちな計算法があり、厳格な計算法とも呼ばれる.せっかちな計算法は多くのプログラミング言語の動作方式である.
2.整理
私がカフェのオーナーだと思ってください!!☕️
想像してみてください.出勤時間にアメリカンコーヒーは平均20杯ほど売れます.そのため、私たちは20杯のコーヒーを作りました.
しかし、これはどうすればいいですか.私たちの喫茶店の前で無料のコーヒーの贈呈活動を行います.(なんでうちの店の前にしなきゃいけないの…)
ということで、古いお客さんが注文したお酒2杯を除いて、18杯は売れませんでした!!😱
しかし、もし私が事前にコーヒーを作らなければ、注文があるたびに、私はします.それでは、私はコーヒーを2杯しか作りませんでした.
もちろん、現実の効率とコンピューターの世界には違いがありますが、効率を計算しましょう.💻
コーヒーを20杯作る場合を例1、コーヒーを2杯作る場合を例2と言います
例1
コーヒーを20杯作る努力+20杯のコスト
例2
コーヒーを2杯作る努力+2杯のコスト
計算効率、例2>>>>>>>>>>>>>>>>例1.
このような注文があれば頑張ります(コーヒー作り)
Lazy Evaluation
2. Analysis Lazy Evaluation from code def print_iter(iter):
for element in iter:
print(element)
def lazy_return(num):
print("sleep 1s")
time.sleep(1)
return num
L = [ 1,2,3]
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 i in L )
print_iter(generator_exp)
def print_iter(iter):
for element in iter:
print(element)
def lazy_return(num):
print("sleep 1s")
time.sleep(1)
return num
L = [ 1,2,3]
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 i in L )
print_iter(generator_exp)
以上のコードの実行結果は以下の通りです.
sleep 1 s出力3回後出力123は、completion listがfor loopを迂回してlistを予め作成し(*例1はコーヒーポットを予め作成し)、生成したlistの内容を出力するのを見ることができる.
3. Why use it? import random
counter = random.randrange(1, 11) # 1부터 10사이의 랜덤 값 생성
counter_comprehension = counter
counter_lazy = counter
print(f"몇잔 팔았는지: {counter}")
def Let_make_list():
print("커피 만들기")
return 1
#예시1
print("리스트 만들기(커피 만들기)")
comprehension_list = [Let_make_list () for x in range(10)]
print("리스트 사용(커피 판매)")
for item in comprehension_list:
counter_comprehension -= 1
print("커피판매")
if counter_comprehension == 0:
break
#예시2
print("리스트 만들기(커피 만들기)")
lazy_list = (Let_make_list () for x in range(10))
print("리스트 사용(커피 판매)")
for item in lazy_list:
counter_lazy -= 1
print("커피판매")
if counter_lazy == 0:
break
上記のコードは、任意の数のコーヒーを受信し、例1と例2を比較するコードである.次の結果を表示します.
計4杯の
import random
counter = random.randrange(1, 11) # 1부터 10사이의 랜덤 값 생성
counter_comprehension = counter
counter_lazy = counter
print(f"몇잔 팔았는지: {counter}")
def Let_make_list():
print("커피 만들기")
return 1
#예시1
print("리스트 만들기(커피 만들기)")
comprehension_list = [Let_make_list () for x in range(10)]
print("리스트 사용(커피 판매)")
for item in comprehension_list:
counter_comprehension -= 1
print("커피판매")
if counter_comprehension == 0:
break
#예시2
print("리스트 만들기(커피 만들기)")
lazy_list = (Let_make_list () for x in range(10))
print("리스트 사용(커피 판매)")
for item in lazy_list:
counter_lazy -= 1
print("커피판매")
if counter_lazy == 0:
break
4. conclusion
Djangoを勉強している間に、本当に疑問のあるドラムORMはLazy Evaluation方式を使っているので、効率よくDBにアクセスできます.本当に聞いたことがあるだけで、実際に使っている時はDBにアクセスできます!!私は尼がずっと言っているのを聞いただけで、駆動の原理を知らない.
データベースにアクセスする際にLazy Evaluationメソッドを使用すると,得られる結果値が3回フィルタリングされ,1回除外されるという利点がある.
Lazy Evaluationメソッドは最後にquerySetを作成します.
Lazy Evaluationを使用しない場合は、合計4つのquerySetを作成する必要があります.
勉強するDjangoに近づいてきた気がします!pythonについてもっと勉強して、ドラムを使うと、ドラムに支配されている開発者ではなくドラムを占領して、私が使いたい部分を使って、違う部分を使って、少しずつ自分の好みに合わせて使う開発者を修正することができます...!
遅くなってもよく勉強しなさい.🐍
第1週木曜日
Reference
この問題について(Lazy Evaluation), 我々は、より多くの情報をここで見つけました
https://velog.io/@jay95ko/Lazy-Evaluation
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Lazy Evaluation), 我々は、より多くの情報をここで見つけました https://velog.io/@jay95ko/Lazy-Evaluationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol