몇 년 전에 로그 파일 하나가 20GB짜리인데 이걸 통째로 readlines()로 읽어서 처리하는 코드를 짠 적이 있어요. 로컬에서 500MB 짜리로 테스트할 때는 잘 돌더니 운영에서 메모리 부족으로 프로세스가 죽었죠. 원인은 20GB를 리스트로 다 올린 것. 그때 yield로 한 줄씩 뽑아주는 형태로 바꿨더니 메모리 20MB로도 잘 돌아갔습니다. 오늘은 이터레이터·제너레이터가 뭐고, 언제 yield를 써야 하는지 정리해볼게요.개념 / 원리먼저 용어부터 갈라봅시다.이터러블(Iterable): for로 순회할 수 있는 모든 것. __iter__ 메서드가 있다. 예: list, dict, 문자열, 파일 객체.이터레이터(Iterator): next()가 호출될 때마다 다음 값을 하나씩 뱉는 것. __iter_..