본문 바로가기

개발하자

ipython 및 jupyter의 메모리 사용량을 나열합니다.

반응형

ipython 및 jupyter의 메모리 사용량을 나열합니다.

나는 ipyton 커널이 가져간 몇 Gb의 메모리를 가지고 있다. 이는 일부 작업 중에 생성했을 수도 있고 이제는 더 이상 필요하지 않은 큰 개체(매트릭스, 목록, 널찍한 배열 등)에서 발생한 것이라고 생각합니다.

나는 그들의 기억 발자국을 보고 싶다. 그것을 하는 간단한 방법이 있나요? 특정 유형에 대해서는 방법이 있지만 모두를 위한 것은 아닙니다. 그래서 저는 제가 만든 모든 물체와 그들의 기억 직업을 나열하는 일반적인 방법을 찾고 있습니다.




또는 를 사용하는 경우 모든 개체가 정의한 목록을 가져오려면 약간의 작업이 필요합니다. 즉, 에서 사용 가능한 모든 것을 가져와서 , 등의 개체를 필터링하는 것을 의미합니다. 이러한 개체가 있는지 확인한 후에는 를 사용하여 개체 크기를 파악할 수 있습니다. 이는 다음과 같이 요약할 수 있다.

import sys

# These are the usual ipython objects, including this one you are creating
ipython_vars = ['In', 'Out', 'exit', 'quit', 'get_ipython', 'ipython_vars']

# Get a sorted list of the objects and their sizes
sorted([(x, sys.getsizeof(globals().get(x))) for x in dir() if not x.startswith('_') and x not in sys.modules and x not in ipython_vars], key=lambda x: x[1], reverse=True)

파이썬 객체(파이썬의 내장 함수로 생성된 객체)의 경우 매우 정확할 것이라는 점을 명심하십시오. 그러나 타사 라이브러리를 사용하여 만든 개체에서는 약간 부정확할 수 있습니다. 또한 개체가 가비지 수집기에 의해 관리되는 경우 가비지 수집기 오버헤드가 추가됩니다. 그래서, 어떤 것들은 실제보다 조금 더 무거워 보일 수도 있습니다.

참고로, 의 방법은 배열 객체의 비요소 속성에 의해 소비되는 메모리를 포함하지 않는다는 점에서 다소 오해의 소지가 있을 수 있다.


반응형