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

조회수 21205회

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

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

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

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))
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)