Memory management in Python?

User avatar
Likenew
Уже с Приветом
Posts: 12059
Joined: 15 Feb 2002 10:01
Location: TX

Memory management in Python?

Post by Likenew »

Народ, а кто скажет, ваще возможно контролировать память в <python>? Типа ручками освободить память после использования датафраме?
А то я столкнулась с задачей, которая умирает с сообщением <memory error>. Хотя при етом не только много паняти используется (87.4%), но и <CPU 97%>. Я накатала письмо менегеры, что типо наши ваши <VM laptos> не подходят для таких задач, а потом решила у умной публики спросить может можно как-то облегчит жизнь етой задаче.
uncle_Pasha
Уже с Приветом
Posts: 19939
Joined: 30 Aug 2000 09:01
Location: WA

Re: Memory management in Python?

Post by uncle_Pasha »

Likenew wrote:Народ, а кто скажет, ваще возможно контролировать память в <python>? Типа ручками освободить память после использования датафраме?
А то я столкнулась с задачей, которая умирает с сообщением <memory error>. Хотя при етом не только много паняти используется (87.4%), но и <CPU 97%>. Я накатала письмо менегеры, что типо наши ваши <VM laptos> не подходят для таких задач, а потом решила у умной публики спросить может можно как-то облегчит жизнь етой задаче.
CPU возможно используется за счет swapping, что является следствием большого потребления памяти. Похоже на классический memory leak (для языков имеющих garbage collection). Если оценка требуемого объема памяти сильно расходится с реальным потреблением, надо искать откуда берется это потребление, и почему объекты не могут удалиться - возможно где-то остаются паразитные ссылки и т.п.
User avatar
M. Ridcully
Уже с Приветом
Posts: 12003
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Memory management in Python?

Post by M. Ridcully »

А какой именно Питон у вас?
В CPython вообще-то не "настоящий" GC, а reference-counting, так что всё 100% детерминированно должно быть.
Если действительно течёт, что скорее-всего какая-то СИшная библиотека.
Deckel
Ник закрыт за хамство.
Posts: 357
Joined: 16 Feb 2014 18:34

Re: Memory management in Python?

Post by Deckel »

А вы команду del то используете, вообще? Простите за вопрос.
User avatar
Likenew
Уже с Приветом
Posts: 12059
Joined: 15 Feb 2002 10:01
Location: TX

Re: Memory management in Python?

Post by Likenew »

Спасибо всем :), так, по очереди. Код не мой, при етом написан на программистом, а физиком, и переделан с матлаба. Мне надо чтобы код заработал, а он никак. Команду < del > не помню, т.е., похоже ее там нет. В случае расчетов для набора данных в 500К рецордс, все работало, а вот как 1.6млн привалило, так и загибается программа. Я не большой <python> знаток, начинающий тока, и мне пока трудно оценить, были бы такие проблемы при другом подходе. Я имею в виду, что все данные, т.е.1.6млн, записаны в дата фраме. Вот пока етот дата фраме формировался, то <CPU> был в ~97%, а меморы в ~38%. Когда дело дошло до расчетов, научных расчетов, стат. моделей, то все значения начали доходить до верхних пределов.

Мне интересно, было ли бы легче, если бы был использовал <DB API>, открыт курсор и данные считывались бы по 30К рецордс и те же модели применялись? Было ли бы такое более еффективно? Ето для будущего переписа. Я на днях говорила о дополнителном модуле, так очередной физик показывал мне матлаб код, который надо на <Python> переписать, так сразу бросилось в глаза, что у него в <loop> каждый раз находилось <max> значениеиз того же набора данных :(. Т.е., вполне возможно там где-то и такое найти.

Бисусловно, спарк бы подошел на такое лучше всего, но ето не мне решать....
uncle_Pasha
Уже с Приветом
Posts: 19939
Joined: 30 Aug 2000 09:01
Location: WA

Re: Memory management in Python?

Post by uncle_Pasha »

Likenew wrote:Мне интересно, было ли бы легче, если бы был использовал <DB API>, открыт курсор и данные считывались бы по 30К рецордс и те же модели применялись? Было ли бы такое более еффективно?
Безусловно - выкачали часть данных, обработали, и забыли - для минимизации используемой памяти - в самый раз.
Если только это единственный критерий оптимизации.
Deckel
Ник закрыт за хамство.
Posts: 357
Joined: 16 Feb 2014 18:34

Memory management in Python?

Post by Deckel »

Вообще-то задача процессора - работать а не сидеть без дела. Так что загрузка процессора 100% - это хорошо, если по делу. И если дополнительная память помогает ускорить расчёты, то её тоже надо использовать как только можно больше. Переписывайте программу, только если ей действительно уже не хватает памяти, т.е. она падает с ошибкой памяти. Иначе там скорее всего все очень даже правильно и оптимально сделано.
User avatar
Likenew
Уже с Приветом
Posts: 12059
Joined: 15 Feb 2002 10:01
Location: TX

Re: Memory management in Python?

Post by Likenew »

Deckel wrote:А вы команду дел то используете, вообще? Простите за вопрос.
а кстати вспомнила, таки используем для удаления нескольких колонок.
User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Memory management in Python?

Post by Flash-04 »

Ну а что вы хотите? Эти языки не были написаны для "экономных" машинок. Воткните памяти в два раза больше.
Not everyone believes what I believe but my beliefs do not require them to.
blanko27
Уже с Приветом
Posts: 2261
Joined: 17 Jun 2003 04:41
Location: Just like US

Re: Memory management in Python?

Post by blanko27 »

Снежная Королева wrote:У меня точно такая же проблема в R.

Код работает 5 раз, и довольно быстро, на 6й раз просто crash без всяких ошибок. Точно такой же код.
Нет препятствий патриотам! :umnik1:


(А SAP HANA интегрируется с R)
...а мы такой компанией, возьмем, да и припремся к Элис!

Return to “Вопросы и новости IT”