내가 보려고 만든 블로그
< 파이썬 > Generator 란 본문
Generator 는 iterator를 생성 하는 함수이다 . iterator 라 하면 다음과 같은 For 문을 이용하여 많이 사용을 해보았을 것이다.
for i in range(5):
print(i)
Generator는 iterator 와 반복해서 수행을 한다는 점에서는 같지만 몇가지 다르고 유용한 점을 가지고 있다.
가장 먼저 generator 는 yield 를 이용하여 생성하며 next() 를 이용해서 접근할 수 있다.
또한 list comprehension 에서 [] 대신 () 를 사용하게 되면 generator를 반환하게 된다.
그렇다면 generator 를 어떨때 사용해야 하는 것이고 왜 필요한 것일까??
그 목적은 바로 메모리 관리에 있다. sys를 이용하여 메모리의 사용량을 체크해보자.
List comprehension 을 사용할 경우 iterator의 크기가 늘어남에 따라 메모리의 사용량이 크게 증가한다. 하지만 generator를 사용할 경우 112의 고정된 값이 사용하게 되는 걸 확인할 수 있다.
그 이유는 generator의 경우 generator 가 생성될 때 데이터들을 메모리에 전부 적재하는 것이 아니라 next() 를 실행할 경우에 값을 메모리에 올리는 방식이기 때문이다. 따라서 좀 더 효과적으로 메모리를 사용할 수 있다.
'Python | Web > Python' 카테고리의 다른 글
<파이썬> Descriptor (0) | 2021.08.08 |
---|---|
<파이썬> Property (0) | 2021.08.08 |
<파이썬> Magic Method 란? (0) | 2021.07.18 |
<파이썬> 클래스의 상속과 super 에 대하여 (0) | 2021.07.11 |
<파이썬> 메타 클래스( Meta Class) 란? (0) | 2021.07.03 |