내가 보려고 만든 블로그

< 파이썬 > Generator 란 본문

Python | Web/Python

< 파이썬 > Generator 란

정의김 2021. 8. 1. 16:48

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