파이썬에서 객체가 얼마나 많은 메모리를 사용하고 있는지 알아보십시오 [중복]
이 질문에는 이미 답변이 있습니다.
- 파이썬에서 객체의 크기를 어떻게 결정합니까? 답변 10 개
객체가 얼마나 많은 메모리를 사용하고 있는지 어떻게 알 수 있습니까? 나는 코드 블록에 의해 얼마나 많이 사용되는지 알아낼 수 있지만 인스턴스화 된 객체 (생명 중 언제든지)에 의해 사용되지는 않는다는 것을 알고 있습니다.
파이썬 객체의 메모리 크기를 찾는 쉬운 방법은 없습니다 . 당신이 발견 할 수있는 문제 중 하나는 목록 및 dicts와 같은 Python 객체가 다른 python 객체에 대한 참조를 가질 수 있다는 것입니다 (이 경우 크기는 무엇입니까? 각 객체의 크기를 포함하는 크기는 무엇입니까?). 객체 유형 및 가비지 수집과 관련된 포인터 오버 헤드 및 내부 구조가 있습니다. 마지막으로 일부 python 객체에는 분명하지 않은 동작이 있습니다. 예를 들어, 목록은 대부분의 경우보다 많은 객체를위한 공간을 확보합니다. dicts는 다른 방식으로 작동 할 수 있기 때문에 훨씬 더 복잡합니다 (소수의 키에 대해 다른 구현이 있으며 때로는 항목을 할당하는 경우가 있습니다).
이 코드의 큰 덩어리 (그리고 코드의 업데이트 된 큰 덩어리 메모리에 파이썬 객체의 크기를 대략 최고에 시도가 아웃).
PyObject (거의 모든 파이썬 객체를 나타내는 내부 C 구조체) 에 대한 오래된 설명 을 확인할 수도 있습니다 .
이 시도:
sys.getsizeof(object)
getsizeof () 는 객체가 가비지 수집기에 의해 관리되는 경우 객체의 __sizeof__
메서드를 호출하고 추가 가비지 수집기 오버 헤드를 추가합니다 .
또 다른 방법은 피클을 사용하는 것입니다. 이 질문의 복제본에 대한 답변 을 참조하십시오 .
다음 중 하나에 대한 개인적인 경험은 없지만 "Python [memory] profiler"수율에 대한 간단한 검색입니다.
PySizer, "Python 용 메모리 프로파일 러"는 http://pysizer.8325.org/에 있습니다. 그러나 페이지는 프로젝트가 한동안 업데이트되지 않았 음을 나타내는 것으로 보이며 ...
Heapy, "Python 프로그램의 메모리 관련 문제에 관한 디버깅 및 최적화 지원"은 http://guppy-pe.sourceforge.net/#Heapy 에서 찾을 수 있습니다.
희망이 도움이됩니다.
__sizeof__ 객체에 대한 재정의가 잘못 될 수 있으므로주의해서 사용해야합니다.
bregman.suite를 사용하여 sys.getsizeof를 사용한 일부 테스트는 객체 인스턴스의 배열 객체 (데이터) 복사본을 객체 자체 (mfcc)보다 큰 것으로 출력합니다.
>>> mfcc = MelFrequencyCepstrum(filepath, params)
>>> data = mfcc.X[:]
>>> sys.getsizeof(mfcc)
64
>>> sys.getsizeof(mfcc.X)
>>>80
>>> sys.getsizeof(data)
80
>>> mfcc
<bregman.features.MelFrequencyCepstrum object at 0x104ad3e90>
큰 객체의 경우 다소 조잡하지만 효과적인 방법을 사용할 수 있습니다. 파이썬 프로세스가 시스템에서 차지하는 메모리 양을 확인한 다음 객체를 삭제하고 비교하십시오.
이 방법에는 많은 단점이 있지만 매우 큰 물체에 대한 매우 빠른 추정치를 제공합니다.
'IT' 카테고리의 다른 글
파이썬에서 메모리 사용량을 어떻게 프로파일합니까? (0) | 2020.05.14 |
---|---|
Python의 zip 함수와 동등한 Javascript (0) | 2020.05.14 |
Google Closure Library는 jQuery보다 무엇을 제공합니까? (0) | 2020.05.14 |
자바 대표? (0) | 2020.05.14 |
TensorFlow에서 Session.run ()과 Tensor.eval ()의 차이점은 무엇입니까? (0) | 2020.05.14 |