파이썬에서 객체의 크기를 알아내는 방법 없을까요?
조회수 21078회
C/C++에서는 sizeof()
를 써서 알아냈었는데
파이썬에서도 비슷한 기능이 있는지 궁금합니다
필드의 크기로 value의 크기를 정하는 XML 파일을 쓰고 있어서 특정 필드의 값을 바꿀 때 필드 크기를 항상 확인해 줘야 합니다.
string인 경우는 길이를 확인하면 되는데 int
나 float
같은 건 어떻게 해야 될지 모르겠습니다
1 답변
-
파이썬 2.6 이상에서는 객체의 크기를 알아낼 때에는 sys모듈의 sys.getsizeof 함수를 씁니다.
sys.getsizeof는 객체의 크기를 byte단위로 return 해 줍니다. 객체는 어떤 게 들어와도 상관없고, 파이썬 내장 타입(
int
,float
등)에서는 정확한 값을 내지만 유저가 정의한 클래스 같은 객체는 구현에 따라서 조금씩 다른 결과가 나올 수도 있습니다.getsizeof()
는 내부에서 객체의__sizeof__
메소드를 호출하는 방식으로 구현되어있고, 객체가 garbage collector에 의해 관리되는 경우는__sizeof__
에 오버헤드가 추가되어 더 큰 값을 return할 수도 있습니다.사용 예는
import sys class foo(): mystr = "hello python world!" x = 1000 y = foo() print(sys.getsizeof(x)) print(sys.getsizeof(y))
댓글 입력