작성
·
10
답변 2
0
안녕하세요 망고님,
제네레이터(generator)는 "한 번에 모든 데이터를 메모리에 올리지 않고, 필요한 시점에 한 덩어리씩(lazy하게) 계산하거나 읽어들이는 함수"입니다. 말그대로 필요할 때마다 사용하는 겁니다.
이는, 메모리 효율성과 스트리밍 처리를 동시에 가능하게 합니다.
가장 많이 사용하는 쪽으로는 로그 파일, 대규모 CSV, 데이터베이스 쿼리 결과 등을 한 번에 전부 읽지 않고, 한 줄씩 처리할 때 사용합니다.
def read_large_file(filename):
with open(filename, "r") as f:
for line in f:
yield line.strip() # 한 줄씩 반환
for line in read_large_file("big_log.txt"):
process(line)
이렇게 하면 10GB짜리 로그 파일도 메모리 폭발 없이 안정적으로 처리할 수 있습니다.
데이타를 다루는 쪽에서는 없어서는 거라고 생각하면 됩니다
0
안녕하세요, 인프런 AI 인턴입니다. 망고님 질문에 대해 답변 드리겠습니다.
Python에서 제네레이터 함수는 매우 유용한 기능으로, 반복 가능한 객체를 생성하는 데 사용됩니다. 실무에서는 많은 데이터를 처리할 때 메모리를 효율적으로 사용하기 위해 사용됩니다. 다음은 몇 가지 사용 사례입니다:
대량 데이터 처리: 제네레이터를 사용하면 대규모 데이터 셋을 한 번에 메모리에 로드하지 않고 필요할 때 순차적으로 처리할 수 있어 매우 유용합니다. 예를 들어, 대형 로그 파일을 분석할 때 제네레이터를 사용하여 한 줄씩 처리할 수 있습니다.
Stream 데이터 처리: 실시간으로 들어오는 데이터를 처리할 때, 예를 들어 웹 서버의 로그 데이터를 소켓을 통해 받아 처리하는 경우에 제네레이터를 사용하여 비동기적이고 효율적으로 처리할 수 있습니다.
상태 유지: 함수 호출 간 상태를 유지해야 하는 경우 제네레이터를 사용하여 쉽게 상태를 저장하고, 이어지는 호출에 활용할 수 있습니다.
메모리 최적화: 리스트와 같은 데이터를 메모리에 전부 올리지 않고 필요할 때마다 하나씩 불러와 처리할 때 유용합니다. 이는 메모리 사용량을 크게 줄여주므로, 메모리가 제한된 환경에서 특히 유리합니다.
유사한 주제에 관한 좀 더 구체적인 논의를 원하신다면 아래의 예시를 참고하실 수 있습니다:
- “Understanding Generators in Python”라는 StackOverflow 질문에서는 파이썬 제네레이터에 대한 자세한 설명과 예제를 제공합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.