호랭이 분석가

[파이썬] 제너레이터와 yield를 활용한 데이터 처리 기법 본문

Python

[파이썬] 제너레이터와 yield를 활용한 데이터 처리 기법

데이터호랑이 2023. 8. 2. 00:01
반응형

제너레이터는 데이터를 순회하는데 유용한 파이썬의 강력한 기능 중 하나입니다.

yield 키워드를 사용하여 제너레이터 함수를 정의하고,

이를 통해 메모리를 효율적으로 사용하면서 데이터를 순회하는 방법을 소개하겠습니다.

 

1. 제너레이터란? (Generator)

 

제너레이터는 이터레이터(Iterrator)를 생성하는 함수로, 데이터를 순회할 수 있는 객체를 만들어줍니다.

이터레이터와 비슷하지만, 이터레이터와 달리 모든 데이터를 미리 생성하지 않고,

필요할 때마다 데이터를 생성하면서 메모리를 효율적으로 사용할 수 있습니다.

 

2. 제너레이터 함수와 yield 키워드

 

제너레이터 함수는 일반 함수와 유사하지만, return 대신에 yield 키워드를 사용하여 데이터를 생성합니다.

yield 키워드는 일시적으로 함수의 실행을 멈추고 값을 반환한 후,

다시 호출되었을 때 이전 상태부터 계속 실행합니다.

 

def generator_function():
    yield 1
    yield 2
    yield 3

 

3. 제너레이터 객체와 순회

 

제너레이터 함수를 호출하면 제너레이터 객체가 반환됩니다.

제너레이터 객체는 이터레이터 프로토콜을 따르기 때문에,

for 루프를 사용하여 데이터를 순회할 수 있습니다.

 

gen = generator_function()

for num in gen :
    print(num)

 

4. 메모리 효율성

 

제너레이터는 필요한 데이터만 생성하므로 대용량의 데이터를 다룰 때 메모리를 효율적으로 사용합니다.

예를 들어, 무한수열을 다룰 때에도 메모리 오버플로우 없이 사용할 수 있습니다.

 

def infinite_sequence():
    num = 0
    while True:
        yield num
        num += 1

 

5. 제너레이터 표현식

 

리스트 컴프리헨션과 유사하게 제너레이터 표현식을 사용하여 제너레이터를 생성할 수 있습니다.

 

gen_expr = (x for x in range(5))

 

6. 제너레이터의 활용

 

  • 파일 입출력
  • 빅데이터 처리
  • 무한수열
  • 비동기 프로그래밍

위 상황 이외에도 다양한 상황에서 제너레이터가 유용하게 활용될 수 있습니다.

메모리를 효율적으로 사용하여 데이터를 처리할 수 있기 때문에 파이썬 프로그래밍에서 필수적인 요소입니다.

 

 

Comments