astoon
Сен. 25, 2008 14:18:48
Привет.
Есть список кортежей со строками, т.е. список вида
[ (u'foo', u'blah'), (u'foo', u'blah') ... (u'foo', u'blah')]
Как в лоб расчитать размер занимаемой им памяти ? Причем без погрешности, так как он может быть очень большим.
shiza
Сен. 25, 2008 14:27:56
а вот никто не знает, ибо больно уж все мудрено %)
В даном случае например, строки одинаковые, поэтому они буду хранится в одной ячейке памяти.
Все что я встречал в интернете по этой теме:
1. Попытки примерно прикинуть что сколько занимает, исходя из типов данных.
2. Насоздавать кучу данных такого типа, и мерить как изменился объем всей программы в процессе работы.
P.S. как вывод, точно измерить не получится.
astoon
Сен. 25, 2008 14:35:52
Естесственно, строки в кортежах не одинаковые. Хотелось бы формулу, может кто представляет как ее получить конкретно для этого случая, скажем зная длину каждой строки.
Нужно - для того чтобы представлять в каких пределах использовать хранение в RAM, а в каких - уже лучше БД. Процесс демоном, так что оба варианта возможны.
shiza
Сен. 25, 2008 14:53:40
Тогда можно прпоробовать функцию mx.Tools.sizeof(a) (
http://www.egenix.com/products/python/mxBase/mxTools/).Для сложных объектов она не канаен, а вот для не юникодных строк и целых - вполне.
Ветка в тему, по ограничению использования функции:
http://www.egenix.com/mailman-archives/egenix-users/2002-November/113383.html
crchemist
Сен. 25, 2008 14:55:01
подивіться по типах даних в Pythonsrc/Objects/tuleobject.c, stringobject.c, … Тут є моя презентація
http://docs.google.com/a/quintagroup.com/Present?id=dc38f7h3_0c2xtjnd5 (є в ній кусок по управління памяттю в пітоні) Тут є відео з презентації
http://plug.org.ua/video/python-objects/view на українській; Повинно помогти. Сама призентаія без відео не знаю чи буде корисною