Python/Utils

[Python Utils] Python 제너레이터 사용

yubi5050 2022. 8. 25. 22:58

제너레이터 동작 방식

Generator yield 문은 메모리 절약을 위한 기법으로, generator는 iterator를 생성해주고 함수 안에 yield 키워드를 이용해서 데이터를 순차적으로 반환한다. 

제너레이터의 이점으로는 메모리 절약 뿐만 아니라, 자연스러운 데이터 흐름 파이프라인으로 구성이 가능하다. 

(ex. 긴 스트림에 대한 주기적인 처리를 할 때, 특정 단위로 반복이 가능하다.)

 

제너레이터의 동작방식은 아래와 같다.

출처 : https://nvie.com/posts/iterators-vs-generators/

 

예제 코드

#제네레이터 생성
def ex_func1(nums):
    for i in nums:
        yield i * i

if __name__ =="__main__":
    generator_ex = ex_func1([1,2,3])
    print(next(generator_ex)) # 1
    print(next(generator_ex)) # 4
    print(next(generator_ex)) # 9
    print(next(generator_ex)) # 더 반환할 값이 없으면 StopIteration 발생