파이썬 메모리 부족 오류 (Python out of memory error) 알아보기.

파이썬 메모리 부족 오류 (Python out of memory error)

소개

파이썬은 쉽고 간단한 문법으로 인해 높은 인기를 얻고 있는 프로그래밍 언어입니다. 그러나 이는 동시에 파이썬이 처리하는 데이터의 양이 많아지면 메모리 부족 오류가 발생하는 이유입니다. 이 글에서는 파이썬에서 발생하는 메모리 부족 오류에 대해 살펴보고 대처하는 방법을 제시하겠습니다.

파이썬 메모리 부족 오류란?

파이썬 프로그램이 실행되는 도중 해당 프로그램이 사용할 수 있는 메모리 양을 초과할 때 발생하는 오류를 말합니다. 이 오류는 대부분 재귀적인 함수 호출, 반복문을 이용한 작업 등으로 인해 발생합니다.

메모리 부족 오류 예시

아래는 메모리 부족 오류가 발생할 수 있는 예시 코드입니다.
python
a = []
while True:
a.append('' * 1000000)

위 코드는 빈 리스트에 한 문자열을 계속해서 추가하는 코드입니다. 이를 실행하면 메모리 부족 오류가 발생할 도리입니다.

메모리 부족 오류 해결 방법

1. 메모리 누수 확인

메모리 누수(memory leak)란 사용하지 않는 메모리 공간을 계속해서 차지하는 현상을 말합니다. 이는 메모리 부족 오류를 초래하는 중요한 원인입니다. 따라서 먼저 메모리 누수가 발생하는 지 확인해야 합니다.

메모리 누수를 확인하기 위해 파이썬 내장 모듈인 gc를 이용합니다. 아래는 gc 모듈을 이용하여 메모리 누수 확인하는 코드입니다.
python
import gc
gc.collect()

위 코드를 실행하면, 현재 메모리에서 사용하지 않는 객체들이 삭제됩니다.

2. 메모리 사용량 확인

파이썬 내장 모듈인 psutil을 이용하면 프로그램이 얼마나 많은 메모리를 사용하고 있는지 확인할 수 있습니다. 이를 이용하여 메모리 사용량이 높아진 경우 자세한 분석이 가능합니다.
python
import psutil
def memory_usage():
process = psutil.Process(os.getpid())
mem_info = process.memory_info()
return mem_info.rss

3. 메모리 최적화

  • 변수 할당 후 del : 더 이상 사용되지 않는 변수의 경우 del로 제거하여 해당 변수가 차지하던 메모리 공간을 해제합니다.
  • 메모리 누수 개선 : 객체 생성 후 더 이상 사용하지 않는 객체는 참조해제(del)하여 메모리 공간을 반환합니다.
  • 제너레이터 이용 : 반복문을 대신할 수 있는 제너레이터를 이용하여 불필요한 데이터들을 제거할 수 있습니다.
    python
    def generate_data():
    for i in range(10000):
    yield i

결론

메모리 부족 오류가 난다면 자신이 작성한 코드에서 메모리 누수가 있는지 확인해야 합니다. 또한 파이썬 모듈 중 psutil 모듈과 gc 모듈을 이용하여 메모리 상태를 확인하는 방법도 있으니 참고하시기 바랍니다.