Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 튜플(Tuple) 크기 구하기 – sys.getsizeof() 완벽 가이드

파이썬에서 튜플(tuple)이 실제로 차지하는 메모리 크기를 확인해야 할 때가 있습니다. 이럴 때는 sys 모듈의 getsizeof() 메서드를 사용하면 객체가 사용하는 메모리를 바이트(byte) 단위로 간편하게 확인할 수 있습니다.

참고로 len() 함수가 튜플에 담긴 요소의 개수를 반환한다면, sys.getsizeof()는 튜플 객체가 메모리에서 차지하는 실제 크기를 반환한다는 점에서 서로 다릅니다.

아래는 문자열·숫자가 섞인 튜플, 문자열만 담은 튜플, 그리고 중첩 튜플까지 세 가지 서로 다른 튜플의 크기를 구하는 예제입니다.

예제 코드

import sys

tuple_1 = ("A", 1, "B", 2, "C", 3)
tuple_2 = ("Java", "Lee", "Code", "Mark", "John")
tuple_3 = ((1, "Bill"), (2, "Ant"), (3, "Fox"), (4, "Cheetah"))

print("첫 번째 튜플 :")
print(tuple_1)
print("두 번째 튜플 :")
print(tuple_2)
print("세 번째 튜플 :")
print(tuple_3)

print("첫 번째 튜플의 크기 : " + str(sys.getsizeof(tuple_1)) + " bytes")
print("두 번째 튜플의 크기 : " + str(sys.getsizeof(tuple_2)) + " bytes")
print("세 번째 튜플의 크기 : " + str(sys.getsizeof(tuple_3)) + " bytes")

실행 결과

첫 번째 튜플 :
('A', 1, 'B', 2, 'C', 3)
두 번째 튜플 :
('Java', 'Lee', 'Code', 'Mark', 'John')
세 번째 튜플 :
((1, 'Bill'), (2, 'Ant'), (3, 'Fox'), (4, 'Cheetah'))
첫 번째 튜플의 크기 : 96 bytes
두 번째 튜플의 크기 : 88 bytes
세 번째 튜플의 크기 : 80 bytes

코드 설명

  • 메모리 크기를 측정하기 위해 먼저 sys 모듈을 임포트합니다.

  • 문자열과 숫자가 섞인 튜플, 문자열만 담긴 튜플, 그리고 튜플 안에 튜플이 들어 있는 중첩 튜플, 총 세 개의 튜플을 정의하고 콘솔에 출력합니다.

  • 각 튜플에 대해 sys.getsizeof() 메서드를 호출하여 해당 객체가 차지하는 메모리 크기를 바이트 단위로 변환한 뒤 콘솔에 출력합니다.

알아두면 좋은 점

getsizeof()가 반환하는 값에는 튜플 객체 자체의 관리 정보(오버헤드)가 포함됩니다. 따라서 튜플은 비어 있더라도 일정한 기본 크기를 가지며, 요소가 하나 추가될 때마다 포인터 하나만큼 크기가 늘어납니다. 또한 중첩 튜플의 경우 외부 튜플에는 내부 튜플 전체가 아니라 내부 튜플을 가리키는 참조(주소) 크기만 포함되므로, 위 예제에서 요소가 4개뿐인 세 번째 튜플이 가장 작게 측정된 것입니다. 정확한 수치는 파이썬 버전과 운영체제(32비트/64비트) 환경에 따라 달라질 수 있다는 점도 유의하세요.