Форум сайта python.su
slav0nicПовторно загружаю страницу вновь и вновь…ну в 2 раза не стала больше, а за раз на 1мб в среднем накапывает память=) Уж не знаю это утечки или особенности работы Джанги
10 раз повторяю, это нормальное поведение, повтори запрос и увидишь, что озу не стало в 2 раза больше и это не memory leak
slav0nicЯ только что это сделал, мой предыдущий пост, - поднимите взор выше и увидите результаты - после gc.collect() количество памяти возвращается в состояние первичного запуска питона.
мне лень искать, но гуглится на тему
сделай x = range(100000);del x; будет тот же “прикол”
slav0nicЭто только тестовый пример (немногим выше это написал), в реале над списком могут выполнятся, например математические или статистические операции по нескольким формулам и т.п. не в этом суть вопроса.
тут в другом вопрос, нахрена ты делаешь fetchall(), чтоб вывести count()? и зачем тебе всё сразу читать в память
Офлайн
да причём здесь вообще джанга…
напиши тоже самое в обычном скрипте и играйся дальше, раз такой упрямый)
Офлайн
slav0nic ну нет, что вы, я вовсе не упрямый=) Наверное мы просто не поняли друг друга.
В общем дело разумеется не в Django, а в особенностях работы питона. В какие то моменты он освобождает память полностью, а в какие то нет, для подтверждения этих слов приведу примеры:
1)я открою консоль python и буду вводить команды, в комментариях буду писать занимаемый процессом объем памяти RSS:
Python 2.7.2 (default, Aug 19 2011, 20:41:43) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gc
>>> #RSS=4368
>>> d=range(int(1e7))
>>> #RSS=162508
>>> del d
>>> #RSS=125468
>>> gc.collect()
0
>>> #RSS=4496
Офлайн
если устраивает, то делай выборку меньшими блоками, чтоб не хранить здоровый список в озу
Офлайн