본문 바로가기
python/basic

[Python] 객체의 메모리 크기 확인

by wjwkddyd221001 2023. 5. 30.

개요

Python에서 객체의 크기 확인 방법은 다음과 같습니다.

  1. 변수의 __sizeof__() 함수 이용하기
  2. sys 모듈의 getsizeof() 함수 이용하기

두 방법 모두 객체의 메모리 사이즈를 바이트 단위로 반환합니다.

 

 __sizeof__() 

var1 = "a"
var2 = 10
var3 = 10.0
var4 = [10, 20]
var5 = {"a": 10}
var6 = True

print(var1.__sizeof__())
print(var2.__sizeof__())
print(var3.__sizeof__())
print(var4.__sizeof__())
print(var5.__sizeof__())
print(var6.__sizeof__())



# 다음과 같이 출력됩니다.
'''
50
28
24
56
216
28
'''

 

getsizeof()

import sys

var1 = "a"
var2 = 10
var3 = 10.0
var4 = [10, 20]
var5 = {"a": 10}
var6 = True

print(sys.getsizeof(var1))
print(sys.getsizeof(var2))
print(sys.getsizeof(var3))
print(sys.getsizeof(var4))
print(sys.getsizeof(var5))
print(sys.getsizeof(var6))


# 다음과 같이 출력됩니다.
50
28
24
72
232
28

 

다른 결과가 나온 이유

일부 변수는 두 방법 모두 같은 결과를 얻었지만 다른 변수에서는 두 방법으로 다른 결과를 얻었습니다.

https://docs.python.org/3/library/sys.html#sys.getsizeof

getsizeof() calls the object’s __sizeof__ method and adds an additional garbage collector overhead if the object is managed by the garbage collector. 

sys모듈의 getsizeof()는 객체의 __sizeof__()를 실행하고 garbage collector overhead가 추가되기 때문에 원래 size보다 조금 더 큰 값이 출력될 수 있습니다.

 

참고자료

https://brownbears.tistory.com/342

https://docs.python.org/3/library/sys.html#sys.getsizeof