[python] 파이썬 코드 실행 시 메모리 사용량 최적화 기법

파이썬은 강력하고 유연한 프로그래밍 언어이지만, 대규모 데이터나 복잡한 알고리즘을 다룰 때 메모리 사용량이 증가하는 문제를 가지고 있습니다. 이를 최적화하기 위해 몇 가지 유용한 기법을 살펴보겠습니다.

1. 제너레이터 사용하기

제너레이터(generator)는 시퀀스를 생성하는데 사용되는 코드를 작성할 때 매우 유용합니다. 일반적으로 리스트와 같은 자료구조를 사용하면 모든 값을 한 번에 메모리에 저장해야 하지만, 제너레이터를 사용하면 각 항목을 필요로 하는 시점에 반복적으로 생성할 수 있습니다.

def generate_numbers(n):
    for i in range(n):
        yield i

위의 예시에서는 generate_numbers 함수가 제너레이터로 작성되어 있습니다. 이를 사용하면 메모리를 효율적으로 사용할 수 있습니다.

2. 메모리 프로파일링 도구 활용하기

파이썬에는 메모리 프로파일링을 위한 여러 가지 도구들이 존재합니다. memory_profilerobjgraph 같은 도구를 사용하여 코드 실행 중에 메모리 사용량을 프로파일링하고 누수가 발생하는지 확인할 수 있습니다.

pip install memory_profiler
from memory_profiler import profile

@profile
def my_function():
    # Your code here

3. 리스트 컴프리헨션과 제너레이터 표현식 비교

리스트 컴프리헨션은 간결하고 편리하지만, 모든 결과를 한 번에 메모리에 저장하기 때문에 메모리 효율성이 떨어질 수 있습니다. 반면, 제너레이터 표현식은 필요에 따라 값을 생성하므로 메모리를 효율적으로 관리할 수 있습니다.

# 리스트 컴프리헨션
list_comp = [x**2 for x in range(1000000)]

# 제너레이터 표현식
gen_exp = (x**2 for x in range(1000000))

메모리 사용량을 최적화하기 위해 이러한 기법을 사용해 보세요. 파이썬 코드를 보다 효율적으로 실행할 수 있을 것입니다.

참고 자료