왜 제너레이터는 메모리 사용을 효과적으로 사용할까?

2023. 5. 15. 17:00·Why?
728x90

리스트 VS 제너레이터

  • 먼저 바로 결과 값을 보자
# 숫자 1 ~ 10000 3배로 만든 결과를 리스트 VS 제너레이터
import sys

list_data = [i * 3 for i in range(1, 10000 + 1)]
generator_data = (i * 3 for i in range(1, 10000 + 1))

print(sys.getsizeof(list_data)) # sys.getsizeof = Return the size  of object in bytes.
print(sys.getsizeof(generator_data))

# 87616
# 112

 

위의 코드를 보기만 하더라도 제너레이터가 확연히 메모리 사용량이 줄어든 것을 볼 수 있다.

 

왜 그럴까??

  • 리스트는 데이터 저장에 필요한 메모리를 모두 사용
    • 함수와 정답 값을 모두 사용
  • 제너레이터는 나중에 필요할 때 값을 만들어 사용 (그렇기에 메모리가 매우 적게 필요)
    • 즉, 함수(식)을 만들 때 필요한 메모리만 사용하는 것

이러한 장점 때문에 데이터가 많이 필요한 머신러닝, 데이터 분석 쪽에서 굉장히 많이 사용 된다.

728x90
반응형

'Why?' 카테고리의 다른 글

A/B TEST 진행 시 대조군과 실험군의 비율을 비슷하게 맞추는 이유는?  (0) 2023.08.23
seed()는 왜 지정할까?  (0) 2023.08.23
머신러닝과 비교했을 때, 딥러닝이 가지고 있는 장단점은?  (0) 2023.05.15
왜 Cloud 방식으로 데이터를 저장할까?  (0) 2023.05.15
PDP의 해석 시 유의할 점  (0) 2023.05.15
'Why?' 카테고리의 다른 글
  • A/B TEST 진행 시 대조군과 실험군의 비율을 비슷하게 맞추는 이유는?
  • seed()는 왜 지정할까?
  • 머신러닝과 비교했을 때, 딥러닝이 가지고 있는 장단점은?
  • 왜 Cloud 방식으로 데이터를 저장할까?
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (154) N
      • python (5) N
        • selenium (4)
        • algorithm (10) N
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (31) N
      • Data Scientist (3)
      • Data Analysis (11) N
      • Computer Science (36) N
      • Why? (15)
      • 마음가짐 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
왜 제너레이터는 메모리 사용을 효과적으로 사용할까?
상단으로

티스토리툴바