Суп, би. Я знаю, что ты можешь мне помочь. Есть один персер на питоне и он течет. Со временем он занимает всю свободную память и падает. http://pastebin.com/B4202UAz
Ну где же вы, питонЫ?
Двач - борда успешных синьоров же
>>145971197 (OP)Это джанговский декоратор?
>>145971554Да. Я хз нужен он или нет если я юзаю db.reset_queries() в конце метода
>>145971554Скорее всего проблема в сохранении картинок. Если комменчу кусок с картинками, то памяти занимается всегда одно количество +/- немного.
>>145971197 (OP)Пиздец. Я думал питон никогда не течёт.
>>145971728Попробуй сделай del thumbnail_file после сохранения картинки
>>145971896Сам охуел
>>145971950Пробовал. Все равно течет
>>145971988Так может ты просто память не освобождаешь? Течёт это когда после освобождения она остаётся. А ну проверь.
>>145972070В питоне же сборщик мусора. Руками не надо ничего освобождать
>>145971896Лол. Всё течёт. Достаточно держать живую ссылку на ненужный объект в каком-нибудь замыкании и повторять много раз, чтобы получить кучу мусора, который GC не соберёт.
А что у Питона профилировщик не завезли? Можно по хип-дампам посмотреть, что именно отжирает память.
>>145972263Профилировщик показывает, что дохуя строк в памяти. А как узнать, что именно это за строки я хз.
Питономакаки САСАТЬ
>>145972350Ты сам-то какой масти будешь?
>>145972160Надо. Ты можешь случайно хранить данные которые тебе не нужны.
>>145972393Приведи пример
>>145971197 (OP)Обрати внимание на app.screenshots.add(screenshot). Может ты app.screenshots не очищаешь или может быть каждый screenshot занимает кучу памяти?
>>145972463необнуленная ссылка на объект, который не используется
>>145972550Хм, он должен сам чиститься после выхода из цикла. Я пробовал чистить картинку в памяти которую хранит объект screenshot через del и close. Нихуя не помогает
>>145972463Ну бля. Ты тупо получаешь какое-то значение. Сохраняешь в список. Обрабатываешь. И снова получаешь новое оставив старое в списке. Старое не надо, а ты его случайно хранишь. Это не утечка.
Бамп
>>145972661При выходе из области видимости переменная автоматически должна чиститься. А если переменная находится в ОВ и ты ее не используешь, то это невнимательность а не утечка.>>145972753У меня точно не этот кейс
>>145972383Бейсикобоярин
>>145973031>бояринУ меня для тебя плохие новости
Раз уж тут такой тред, может кто пояснить за winapi? Есть процесс, в нём тыкаю на ссылку и открывается браузер (окно процесса сворачивается) и нужно его обратно развернуть.Через ShowWindow на моей win8.1 норм, на нескольких win8 норм, и есть ещё пару машин win8.1 на которых эта функция не отрабатывает(hWnd цепляет, но не разворачивает). Пробовал так же через SwitchToThisWindow, SetWindowPos и чё-то ещё.Проблема повторяется только на тех win8.1Есть идеи?не ответите - ну и ладно.
>>145973067Какие?
>>145973277Поясни за задачи бейсика? Где он сейчас на практике используется?
>>145972749Списки сами не очищаются.
>>145973442Не думаю, что это так. На это нет никаких причин
>>145972753Это утечка. Ведь утечка - это не освобождение ненужной и неиспользуемой памяти. Сборщик мусора очищает лишь ту память которая точно не нужна (на неё нет ссылок), но ненужность памяти определяется как отсутствие обращения к ней в будущем, а не отсутствие ссылок на неё.
>>145973525Есть список app.screenshots. Я не увидел там вызов очистки этого списка, это значит, что он растёт неограниченно. Если тебе нужны эти объекты в этом списке в дальнейшем, то всё норм и это не утечка, если не нужны, то утечка и делай очистку списка либо вообще сделай локальную переменную.
>>145972160Вся суть недопрограммистов, которые не учили си или С++ в своё время.
>>145973525проиграл с мамкиного прохраммиста
>>145972160
>>145972337Учи матчасть. Читай книги.Так, вроде, принято отвечать
>>145973773При завершении handle_app (а это происходит очень часто довольно часто) переменная app выходит из области видимости и должна удаляться gc.>>145973783Мань, в языках с gc руками не надо ничего чистить
>>145973314Пешу на нём программки для себя. Могу сложить все элементы массива, например.
>>145974075Блин точно, я чёт затупил и думал, что app - глобальная хрень.
>>145974252Вот по поводу глобальных переменных. Грешил на логгер, но его удаление ничего не дало
>>145974181>Могу сложить все элементы массива, например.АХУЕТЬ, все остальные языки сосут, так как в них нельзя сложить все элементы массива.
Хуйхуйпезда
>>145974339Мам, а чё он набрасывается?
>>145974311а ты не можешь в режиме отладки посмотреть в каком месте начинает забиваться память?
>>145974252>Могу сложить все элементы массиваЗа это тебе вряд ли будут платить денеги
>>145974373Чё такое режим отладки? Яж неуч
>>145974411Я работаю именно на массивах, у нас большая контора в маскве. Денег куры не клюют
>>145974470На каких массивах ты работаешь, даун?
>>145974514гугли массивное программирование
>>145974514На массивах информации, еблан.
>>145974311Утечка по идее должна происходить в какой-то коллекции, типа списка или словаря.
>>145974470Senior array developer?>>145974373Допустим я заметил, что функция перед выходом потребила N памяти, а после выхода и работы gc потребляет M памяти. Как я узнаю какие переменные входят в эти M?
>>145974551Вижу ты тоже в теме. Скоро все на него перейдут.
>>145974579Какой информации?
>>145974637Йес
>>145971197 (OP)>data_update_logger.info('Updated'.format(page))А что здесь, собственно, происходит?
>>145974690Не обращай внимания, это тупо логгер.
>>145974690Это я хуйню написал, лол. Должно быть data_update_logger.info('Updated')Но почему-то это робит, лол. Это, очевидно, добавляет запись в лог
>>145974181Сеньер?
>>145974588Поясни. Почему так?
>>145974181> Могу сложить все элементы массиваВ ПРОДАКШОН!!1
>>145974820Потому что все локальные объекты в методах удаляются при выходе, а добавлять данные можно во внешние коллекции, которые висят в памяти и разрастаются.
>>145975008у него в коде таких моментов нет
>>145971197 (OP)thumbnail_unique_name, thumbnail_file = prepare_file(app_data['thumbnailUrl']), thumbnail_file - это открытый файл что ли?
>>145974959Подожди. QA array engineer еще не закончил работу
>>145971197 (OP)У тебя питон - самка, а сейчас у неё время течки. Она хоть здоровая, ссука?
>>145975027app_instance.devices.add(*Device.objects.filter(slug__in=app_instance_data['deviceIdentifiers']))Например.
>>145975040А нет, это вроде имя файла.
Кстати, самый перкол в том, что течь может какая-нибудь функция из какой-нибудь либы.
>>145975040Да, но на жестком диске его нет. Он существует только в памяти. Я пробовал вызывать у него close() перед выходом из метода, но это не дало результата. А вообще вот код метода prepare_file http://pastebin.com/AjRTbSjb
>>145975238Кстати, да.ОП, что это за функция - from data_mining.util import prepare_file
>>145975155У меня нет ссылок на app_instance.devices кроме как через сам app_instance. А app_instance - это локальная переменная
>>145975300>>145975375
>>145975080А хуй знает. Где у питона смотреть пол?
>>145975536Если питон тебя сожрал, то это самец, если сожрала, то это самка.
>>145975300А зачем ты возвращаешь file в return '{}.{}'.format(file_unique_name, file_extension), fileесли ты его не используешь нигде?
Двач, есть ли на питоне нормальные либы, которые позволяют работать с вебсокетами на уровне клиента?
>>145975596Змея пока меня не сожрала. Есть еще способы?
>>145975633Как это не использую?Вот здесь получаюthumbnail_unique_name, thumbnail_file = prepare_file(app_data['thumbnailUrl'])Потом вот здесь используюapp.thumbnail.save(thumbnail_unique_name, thumbnail_file)
>>145975655> 2.7> 2кэ17
>>145975727И что происходит при этом save? Объект ContentFile куда пихается?
>>145975759Ну мне хватает его возможностей
>>145975843app - модель djangoapp.thumbnail - поле модели типа ImageFieldsave очевидно сохраняет новую картинку в это поле. Я хз, что там под капотом творится
Хм, надо попробовать чекать кол-во объектов типа ContentFile после выхода из handle_app
>>145971197 (OP)Проиграл
Поднимаю
>>145974656Любой, которую можно всунуть в массив
>>145976755Опускяю
>>145976819И какую вы там обычно всовываете в массив?
>>145976915Поднимаю
>>145977041Поднимаю?
>>145977016Структурированную
>>145977122Ясн.
d