Zakładając, że używasz ipython
lub jupyter
, trzeba będzie zrobić trochę pracy, aby uzyskać listę wszystkich obiektów ty zdefiniowanych. Oznacza to odebranie wszystkiego pod globals()
i odfiltrowanie obiektów, które są modules
, builtins
, ipython objects
itd. Po upewnieniu się, że masz te obiekty, możesz przechwycić ich rozmiary za pomocą sys.getsizeof
. Można to podsumować w następujący sposób:
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)
Proszę pamiętać, że w przypadku obiektów Pythona (te tworzone z funkcji wbudowanych Pythona), sys.getsizeof
będą bardzo dokładne. Może to jednak być niedokładne w przypadku obiektów tworzonych za pomocą bibliotek innych firm. Ponadto, należy pamiętać, że sys.getsizeof
dodaje dodatkowy narzut na śmieci, jeśli obiekt jest zarządzany przez garbage collector. Niektóre rzeczy mogą wyglądać na nieco cięższe niż w rzeczywistości.
Na marginesie, metoda numpy
może być nieco myląca, ponieważ nie obejmuje pamięci zużywanej przez elementy inne niż element obiektu tablicy.
Mam nadzieję, że to pomoże.
'import sys; posortowane ([(x, sys.getsizeof (x)) dla x w dir()], key = lambda x: x [1], reverse = True) '? – Abdou
Możliwy duplikat [Jak mogę sprawdzić wykorzystanie pamięci obiektów w iPythonie?] (Http://stackoverflow.com/questions/563840/how-can-i-check-the-memory-usage-of-objects-in -ipython) – amin
Nie duplikat, pyta, jak znaleźć przedmioty, których nie zna. @ Na pewno powinieneś zrobić taką odpowiedź. –