lazy evaluation - 느긋한 계산법
느긋한 계산법(Lazy evaluation)은 계산의 결과값이 필요할 때까지 계산을 늦추는 기법이다. 두 가지 관련된 항목들이 있는데 지연 계산법과 최소 계산법이다.
느긋한 계산법을 사용하는 언어들은 "이름으로 호출"하거나 "필요할 때 호출" 하는 방법이 있다.
출처 : https://ko.wikipedia.org/wiki/%EB%8A%90%EA%B8%8B%ED%95%9C_%EA%B3%84%EC%82%B0%EB%B2%95
import time 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 i in L ) print_iter(generator_exp)
실행 결과
comprehension_list는 lazy return()을 한번에 실행함을 볼 수 있고
generator_exp는 한번씩 실행함을 볼 수 있다.
처음에는 comprehension는 한번에 list에 저장해서 실행이 되고
generator는 lazy_return과 print_iter가 한번씩 실행된다고만 생각했고 이해가 되지 않았다. 아래 코드를 참조하고 이해가 되었다.
print("comprehension_list=") comprehension_list = [ lazy_return(i) for i in L ] print("check") print_iter(comprehension_list) print("generator_exp=") generator_exp = ( lazy_return(i) for i in L ) print("check") print_iter(generator_exp)
실행 결과
중간에 check를 출력 해보았다.
comprehension는 "check"가 lazy_return을 모두 실행후 print_iter가 실행되었고,
generator_exp는 "check"가 lazy_return을 콜 될때 마다 실행됨을 알게 되었다.
Author And Source
이 문제에 관하여(lazy evaluation - 느긋한 계산법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cj4207/lazy-evaluation-느긋한-계산법저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)