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() 를 실행할 경우에 값을 메모리에 올리는 방식이기 때문이다. 따라서 좀 더 효과적으로 메모리를 사용할 수 있다.