Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 퍼셉트론
- 선형회귀
- AND게이트
- 데이터크롤링
- numpy
- python
- 로지스틱회귀
- NAND게이트
- DataFrame
- 달의조각
- seaborn
- 리눅스
- 머신러닝
- 우분투
- XOR게이트
- OR게이트
- Perceptron
- 판다스
- linux
- 비지도학습
- 데이터시각화
- ubuntu
- pandas
- 크롤링
- 데이터프레임
- 씨본
- 파이썬
- Deeplearning
- 데이터분석
- 딥러닝
Archives
- Today
- Total
Charming ['ㅡ'] Ham !
Python | Generator (제너레이터) 본문
728x90
반응형
728x90
제너레이터 (Generator)¶
많은 양의 데이터를 처리하다보면 엄청냔 양의 메모리 공간이 필요하게 된다.
예를들어 일반적인 for 문의 경우 5개의 데이터를 한번에 메모리 공간 상에 두고 하나씩 처리가하게 되는데, 이 방법은 데이터의 양이 많아질 수록 효율적이지 못하다.
이런 상황에더 더욱 효율적으로 사용하기 위한 방법으로 제너레이터가 있다.
예를 들면, 일반적인 반복문은 다음과 같다.
In [4]:
my_list = ['a','b','c','d']
# 인자로 받은 리스트를 가공해서 만든 데이터셋 리스트를 리턴하는 함수
def get_dataset_list(my_list):
result_list = []
for i in range(2):
for j in my_list:
result_list.append((i, j))
print('>> {} data loaded..'.format(len(result_list)))
return result_list
for X, y in get_dataset_list(my_list):
print(X, y)
>> 8 data loaded..
0 a
0 b
0 c
0 d
1 a
1 b
1 c
1 d
a, b, c, d 의 값을 모두 메모리 공간상에 두고 차례로 처리하게 된다.
하지만 제너레이터 방법은
In [5]:
my_list = ['a','b','c','d']
# 인자로 받은 리스트로부터 데이터를 하나씩 가져오는 제너레이터를 리턴하는 함수
def get_dataset_generator(my_list):
result_list = []
for i in range(2):
for j in my_list:
yield (i, j)
print('>> 1 data loaded..')
dataset_generator = get_dataset_generator(my_list)
for X, y in dataset_generator:
print(X, y)
0 a
>> 1 data loaded..
0 b
>> 1 data loaded..
0 c
>> 1 data loaded..
0 d
>> 1 data loaded..
1 a
>> 1 data loaded..
1 b
>> 1 data loaded..
1 c
>> 1 data loaded..
1 d
>> 1 data loaded..
데이터를 모두 메모리 공간상에 두고 불러오는 것이 아니라 필요한 것만 차례로 불러다 쓰게된다. 즉, 데이터를 로드하는 시점이 다르며, 이는 앞으로 머신러닝이라는 많은 양의 데이터를 다루고 사용해야할 경우 유용하게 사용된다.
728x90
반응형
'지식 정보 공유 > etc' 카테고리의 다른 글
| Python | list comprehension (리스트 컴프리헨션) (0) | 2021.02.03 |
|---|---|
| Python | Multiprocessing (멀티프로세싱) (0) | 2021.02.02 |
| Python | 클래스 기본 문법 (0) | 2021.01.26 |
| 머신러닝 알고리즘 (1) | 2021.01.24 |
| Ubuntu (18.04) Terminal Commands / 우분투 터미널 명령어 모음집 (0) | 2021.01.18 |