[python] 파이썬 코드 성능 튜닝을 위한 메모리 측면에서의 고려 사항
파이썬은 많은 사용자가 간단하고 효율적으로 코드를 작성할 수 있게 도와주는 인기 있는 프로그래밍 언어입니다. 그러나 대량의 데이터를 다루거나 복잡한 작업을 수행할 때는 메모리 사용량이 중요한 역할을 합니다. 특히 파이썬은 동적으로 메모리를 관리하므로 코드를 작성할 때 메모리 측면에서 고려할 사항이 있습니다.
1. 객체의 메모리 사용량 최소화
파이썬은 모든 것이 객체로 표현됩니다. 따라서 객체의 메모리 사용량을 최소화하는 것이 중요합니다. 예를 들어 tuple
대신 list
를 사용하면 불필요한 메모리를 사용할 수 있습니다. 또한 불필요한 속성을 포함하지 않도록 클래스를 설계함으로써 메모리 사용량을 줄일 수 있습니다.
# 좋은 예
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 나쁜 예
class Person:
def __init__(self, name, age):
self.info = {'name': name, 'age': age}
2. 대규모 데이터 처리 시 메모리 관리
대량의 데이터를 처리할 때는 메모리를 효율적으로 활용해야 합니다. 이를 위해 제너레이터(generator)와 같은 방법을 활용하여 데이터를 일정 부분씩 처리할 수 있습니다. 또한 numpy
나 pandas
와 같은 라이브러리를 사용하여 메모리 사용량을 최적화할 수 있습니다.
# 데이터를 한 번에 읽어들이는 방식
data = open('large_file.txt').readlines()
# 제너레이터를 활용하여 일정 부분씩 읽어들이는 방식
def read_large_file(file):
for line in file:
yield line
3. 불필요한 복사 피하기
파이썬에서 데이터를 복사할 때는 실제로 데이터를 복사하는 것이 아니라 참조만을 복사합니다. 따라서 큰 데이터를 처리할 때는 불필요한 데이터 복사를 피해야 합니다. 대신 슬라이싱이나 copy
모듈을 사용하여 뷰(view)를 생성하거나 얕은 복사를 수행합니다.
# 불필요한 복사를 피하는 예
new_list = old_list[:] # 슬라이싱을 사용하여 뷰를 생성
new_dict = old_dict.copy() # 얕은 복사를 통해 새로운 사본 생성
메모리 측면에서의 고려는 코드의 효율성을 높이고 성능을 최적화하는 데 중요한 요소입니다. 위의 고려 사항을 준수하여 파이썬 코드를 작성할 때 메모리 사용량을 최적화할 수 있습니다.