이게 뭔지.. 신기해서 찾아봤다.
그렇군.
대용량 작업을 처리하기 위해 함수와 메인간에 제어권을 주고 받는 역활을 한다
* 참고 : http://pyengine.blogspot.kr/2010/12/python-yield.html
즉, 소규모작업에서는 큰 문제가 없지만, 대형의 작업등에는 모든 작업이 끝나기를 기다릴 수가 없는 경우가 있습니다
따라서 이때는 중간 중간에 수행을 할 수 있게 yield라는 구문이 들어가게 되는 것입니다.
yield 명령에 대한 예제 코드이다.
def gen_num(): while 1: yield i i++ a = gen_num() for x in range(10) : print a.next(), ## ---------------------------------------------------- ## 0 1 2 3 4 5 6 7 8 9
그러면 왜 List 방식을 사용하지 않는 것일까?
피보나치 수열이나 트리 탐색 등을 스택 즉, List를 이용한 재귀호출 방식으로 처리하면
작업량이 클 경우 오버헤드가 커지기 때문이다.
그러면 왜 Generator방식을 사용하는가?
List로 통째로 넘기는 방식은 데이터량이 클 경우 모든 작업이 완전히 수행한 다음에 넘길수가 있습니다.
즉, 하나의 작업이 완전히 끝난후에 제어권을 넘기는 것이죠
…