Как бы вы узнали, сколько памяти используется объектом? Я знаю, что можно узнать, сколько используется блок кода, но не экземпляр объекта (в любое время в течение его жизни), чего я хочу.Узнайте, сколько памяти используется объектом в Python
ответ
Нет простого способа узнать размер памяти объекта python. Одна из проблем, которые вы можете обнаружить, заключается в том, что объекты Python, такие как списки и dicts, могут иметь ссылки на другие объекты python (в этом случае, каков будет ваш размер? Размер, содержащий размер каждого объекта или нет?). Есть некоторые указатели накладные и внутренние структуры, связанные с типами объектов и сбором мусора. Наконец, некоторые объекты python имеют неочевидное поведение. Например, списки резервирования для большего количества объектов, чем они есть, большую часть времени; dicts еще сложнее, так как они могут работать по-разному (у них разная реализация для небольшого количества ключей, а иногда и для выделения записей).
Существует big chunk of code (и updated big chunk of code), чтобы попытаться наилучшим образом приблизиться к размеру объекта python в памяти. Там также есть simpler approximations. Но они всегда будут приближениями.
Вы также можете проверить некоторые old description about PyObject (внутренняя структура C, представляющая практически все объекты python).
@culix: похоже, что снова используется в [Pympler] (http://pythonhosted.org/Pympler/) модуль. – FriendFX 2013-06-07 07:43:43
Ссылка на "simpler approximations" была нарушена - вы намерены ссылаться на [это сообщение] (https://mail.python.org/pipermail/python-list/2008-January/510696.html)? – Air 2014-06-02 23:03:09
У меня нет личного опыта с любым из следующих, но простой поиск «Python [памяти] профилировщика» выход:
PySizer, «профайлер памяти для Python,» найдено на http://pysizer.8325.org/. Однако на странице, как представляется, указывается, что проект не обновлялся некоторое время и ссылается на ...
Heapy, "поддержка [отладки] отладки и оптимизации в отношении проблем, связанных с памятью в программах Python", найденных в http://guppy-pe.sourceforge.net/#Heapy.
Надеюсь, что это поможет.
Другим подходом является использование соленья. См. this answer в дубликате этого вопроса.
Попробуйте это:
sys.getsizeof(object)
getsizeof() вызывает __sizeof__
метод объекта и добавляет дополнительные накладные расходы сборщик мусора, если объект находится под управлением сборщика мусора.
Это должно использоваться с осторожностью, так как переопределение на объектах __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>
Для больших объектов, которые вы можете использовать несколько сырой, но эффективный метод: проверить, сколько памяти вашего процесс Python занимает в системе, а затем удалить объект и сравнить.
Этот метод имеет много недостатков, но он даст вам очень быструю оценку для очень больших объектов.
- 1. Узнайте, сколько памяти используется объектом в C#?
- 2. Узнайте, сколько памяти используется скриптом
- 3. Узнайте, сколько оперативной памяти используется в потоке
- 4. Узнайте, сколько памяти у iPhone?
- 5. Сколько памяти используется Mondrian?
- 6. Как рассчитать, сколько ОЗУ используется объектом?
- 7. Узнайте, сколько страниц памяти использует процесс linux
- 8. Сколько памяти используется программой Java
- 9. Определите, сколько памяти используется классом?
- 10. Сколько памяти используется numpy ndarray?
- 11. Узнайте, сколько пальцев используется в жесте pan - UIPanGestureRecogniser
- 12. Узнайте, сколько памяти занимает строка в базе данных
- 13. Узнайте, сколько загруженных классов
- 14. Node.js Clustering-Forking, сколько памяти фактически используется?
- 15. Поведать JVM, сколько родной памяти используется
- 16. Как узнать, сколько памяти используется ehcache?
- 17. сколько памяти используется моим модулем ядра?
- 18. Узнайте, используется ли ресурс
- 19. С pouchdb, как найти, сколько памяти используется и сколько остальные
- 20. Сколько памяти занимает Python Pickle?
- 21. Python: Сколько памяти занимает атрибут?
- 22. Узнайте, сколько у него числа
- 23. Узнайте, сколько раз регулярное выражение соответствует строке в Python
- 24. Узнайте, где используется веб-часть?
- 25. Узнайте, сколько цифр число, как в Maple
- 26. Узнайте, сколько вкладок открыто в IE
- 27. Узнайте, сколько потоков работает одновременно в функции
- 28. Узнайте, как часто используется фразу на facebook
- 29. Сколько памяти используется для ссылок функций в объекте Java?
- 30. Посмотрите, сколько памяти моя программа используется в терминале
похоже: http://stackoverflow.com/questions/449560/how-do-determine-the-size-of-an-object-in-python – 2010-10-06 02:52:51
objgraph выглядит интересно: http: //mg.pov .lt/objgraph/ – 2010-01-28 10:06:39
Графический тест: http://stackoverflow.com/a/30008338/2087463 – tmthydvnprt 2016-03-13 13:37:34