Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Поиск «утечек» в Python

У home_virtualis нашёл интересную статью о поиске «утечек» в Python на практике: «Exception #08: Поиск „утечек“ памяти в python-программе». Будет интересно всем тем, у кого в программе на Python неоправданно накапливаются ресурсы с каждой итерацией.

Кстати, с конечным выводом статьи я бы поспорил:

Память не «утекает» в python просто так. Если в программе есть рост используемых ресурсов, то практически всегда это обозначает плохую архитектуру с необоснованно долгим сроком жизни каких либо объектов.

Что называть «Пайтоном»? Если «голый» интерпретатор, то «текущих» популярных интерпретаторов сейчас, наверное, нет. Но язык без модулей мало кому нужен. Как только подключаются внешние (скомпилированные) модули, вот тут начинаются утечки и падения. Например, у меня «Пайтон» упал уже несколько раз при попытке использования µTidylib. Один раз — при попытке открыть несуществующий файл.

Мне кажется, что стабильность интерпретатора определяется ещё и стабильностью его популярных расширений. Хоть разработчики к ним отношения могут и не иметь, но без них язык не решает популярные задачи, ради которых его и изучают.

14 комментариев
coprophagous.ru 2008

Зачем тебе Питон, ты же ПХП-программист.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для coprophagous.ru:

Как ты это определил? Больше всего лет (по длительности) я программировал на Ассемблере (около 8), в последние годы, кроме PHP я часто и много программировал на JavaScript (языке куда более изящном, чем «Пайтон», на мой взгляд). А больше всего мне, наверное, нравится Lua.

isagalaev (softwaremaniacs.org/about) 2008

Что называть «Пайтоном»? Если «голый» интерпретатор, то «текущих» популярных интерпретаторов сейчас, наверное, нет.

CPython -​-​ стандарт де-факто. Поэтому это утверждение неверно :-)

Но язык без модулей мало кому нужен. Как только подключаются внешние (скомпилированные) модули, вот тут начинаются утечки и падения. Например, у меня «Пайтон» упал уже несколько раз при попытке использования µTidylib.

Женя! Ну нельзя же на основании одной библиотеки делать такие обобщения. По сути все гораздо лучше. Во-первых, всю стандартную библиотеку можно использовать без опасений (а там сишного кода довольно много). Потом, внешние библиотеки, написнные на Питоне же, тоже не текут по определению. Да и из действительно популярных сишных библиотек практически все отлажены хорошо. Кривые и текущие по памяти -​-​ это скорее исключение.

Не пугай народ :-)

Евгений Степанищев (bolknote.ru) 2008

Да я пока сам себя больше пугаю :) Пайтон во мне вызывает какое-то внутреннее сопротивление, я не понимаю с чем связано, хотя знаю две достаточно базовые вещи в языке, которые кажутся неэстетичным костылями (да, знаю, и это после PHP, который из костылей состоит).

µTidylib — это что-то с чем-то. Падает от любого чиха, а с ним валится и Пайтон. Но других нестабильных библиотек не встречал пока.

coprophagous.ru 2008

А мне пайтон понравился. Внутреннее сопротивление у него, ишь, какая цаца!

Евгений Степанищев (bolknote.ru) 2008

Комментарий для coprophagous.ru:

Он тебе из-за отступов понравился.

Евгений Степанищев (bolknote.ru) 2008

Вань, а ты не мог бы поставить у себя на сайте класс photo на картинку, чтобы юзерпик в формате hCard читался?

isagalaev (softwaremaniacs.org/about) 2008

Твое внутреннее сопротивление, наверное, связано с тем, что ты подходишь к Питону со своими парадигмами, которые в нем не работают. По крайней мере по твоим вопросам в мессенджере у меня именно такое впечатление складывается :-). Я вот за собой такого не помню, я помню, что стал на нем писать уже после того, как по внешним описаниям понял, что он мне нравится. Поэтому если у меня что-то не получалось, я понимал, что это я дурак, а не Питон кривой :-). Много позже уже стали видется и кривости Питона тоже, где ж их нет.

homo-virtualis.livejournal.com 2008

Только собрался ответить, а Ваня все уже за меня сказал. =) ППКС

Евгений Степанищев (bolknote.ru) 2008

Мне не нравятся две вещи:

a) декораторы
б) магические методы с двумя подчёркиваниями

ну а то, что я не могу многомерный список вывести по человечески тоже, да :) в PHP это просто, в Perl есть куча модулей, а в Python как? Я разбираю письмо и оно (со всеми цитатами) логично ложится в такую структуру. Но мне нужно контролировать правильно ли оно разобралось.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для softwaremaniacs.org/about:

Посмотрим, появится ли юзерпик :)

Евгений Степанищев (bolknote.ru) 2008

Заодно и нормализацию проверю

arikon.livejournal.com 2008

Комментарий для Евгения Степанищева:

Женя, pprint тебе же помог с «красивым» выводом? =)

Евгений Степанищев (bolknote.ru) 2008

Комментарий для arikon.livejournal.com:

Нет, разве ты не помнишь? Я так и получил вывода с отступами.