파이썬에서 객체의 크기를 알아내는 방법 없을까요?


C/C++에서는 sizeof()를 써서 알아냈었는데 파이썬에서도 비슷한 기능이 있는지 궁금합니다

필드의 크기로 value의 크기를 정하는 XML 파일을 쓰고 있어서 특정 필드의 값을 바꿀 때 필드 크기를 항상 확인해 줘야 합니다.

string인 경우는 길이를 확인하면 되는데 intfloat 같은 건 어떻게 해야 될지 모르겠습니다

  • 2016년 01월 27일에 작성됨

조회수 485


1 답변


좋아요
0
싫어요
채택취소하기

파이썬 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))
  • 2016년 01월 27일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close