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 |