Доброго вечера!
Есть объект на инициализацию которого уходит 15 минут и 20 ГБ памяти это при том что в системе 32 ГБ. Повторная его инициализация забивает всю память. После его работы память не сбрасывается и он там висит и к нему можно обратится из консоли. А как к нему можно обратится из скрипта ? Перезапускать ide не вариант тк он запускается почти 4 минуты + еще 15 минут.
Где то видел как можно обратится к переменным консоли IPython но не найду.
https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-run
Я не могу понять почему этой возможности не существует ? Это было бы очень удобно.
ИИ говорит использую globals() - но там не одной переменной нету
Прежде чем говорить о доступе к переменным нужно понять как изначально они формируются и где(в выделенном процессе или в новой среде).
Взависимости от типа переменной есть различные формы их содержания. Например большие массивы в памяти работают куда медленней.
В контексте этого понимания приходим к их доступу и к гарантированному их высвобождению из памяти программы.
Прежде чем написать код с реализацией мне бы хотелось увидеть ответ от здешних форумчан как они борются с динамическим высвобождением памяти из приложения.
https://forum.ascon.ru/index.php?action=profile;u=28559;area=summary
Не Ваш коллега?
Цитата: UU от 24.01.25, 20:47:46https://forum.ascon.ru/index.php?action=profile;u=28559;area=summary
Не Ваш коллега?
Снимок13.PNG
UU, а по существу вопроса будет что то ? у нас времени не много..
Способ есть как сбрасывать именно ту память что была приобретена в ходе работы приложения, но программа после этого крашится :afro:
Способ через WinApi - тоже вызывает краш но в другом месте.
Питон такой корявый или Вы что-то не то делаете? Кстати, что такое утечка памяти?
Цитата: Lemieux от 25.01.25, 10:12:55Питон такой корявый или Вы что-то не то делаете?
Например, работаю через
multiprocessing в процессе вся реализация переменных и по его завершению гарантированно они стираются с памяти, но вот у Компаса почему то растет память. После обработки 200 чертежей у меня достигается предел оперативной памяти.
Каждый раз вызываю сборщик мусора но безрезультатно
gc.collect()Цитата: Lemieux от 25.01.25, 10:12:55Кстати, что такое утечка памяти?
Нет, такого нет у меня 100%.
tracemalloc
Цитата: Doom2 от 25.01.25, 10:20:16Например, работаю через multiprocessing в процессе вся реализация переменных и по завершению гарантированно они стираются с памяти но вот у Компаса почему то растет память. После обработки 200 чертежей у меня достигается предел оперативной памяти.
Каждый раз вызываю сборщик мусора но безрезультатно
gc.collect()
А Вы писали в ТП по этому поводу? А то похоже на корявую работу API КОМПАС.
Цитата: Lemieux от 25.01.25, 10:22:09А Вы писали в ТП по этому поводу?
Они уже знают об этом.
И я хочу сам тоже разобраться -> в реализации своего приложения - я разобрался, а как работать со сторонним приложением тут косвенно написали что можно но как именно не написали.
Цитата: Doom2 от 25.01.25, 09:13:11Снимок13.PNG
У меня на сотовом такое же сообщение.
Еще бывают такие сообщения и в другие моменты на сотовом.
На настольном компьютере такие сообщения не появляются: нормально все отрабатывается.
Цитата: Doom2 от 25.01.25, 10:27:11Они уже знают об этом.
И я хочу сам тоже разобраться -> в реализации своего приложения - я разобрался, а как работать со сторонним приложением тут косвенно написали что можно но как именно не написали.
На последних своих проблемах я понял, что архитектура КОМПАС достаточно примитивна и не стабильна. Она многое не даёт сделать, но при этом выстрелить себе в ногу как два пальца.
Цитата: Lemieux от 25.01.25, 10:38:31На последних своих проблемах я понял, что архитектура КОМПАС достаточно примитивна и не стабильна. Она многое не даёт сделать, но при этом выстрелить себе в ногу как два пальца.
Есть я и есть судьба и другого не дано.
Огородные огороды.
SetProcessWorkingSetSizeEx - ограничение использования памяти.
Хотя: функция
SetProcessWorkingSetSize с параметрами -1, -1 вызывает
TrimWorkingSet, который освобождает неиспользуемую память в рабочем наборе процесса. И вроде как не выгружает активные модули что и не вызывают разрушения приложения.
Цитата: lavgirb от 25.01.25, 10:35:42На настольном компьютере такие сообщения не появляются: нормально все отрабатывается.
У меня с компьютера. Единственное что иногда эмулятор андройда играет роль прокси сервера но там как вроде не меняются заголовки запросов.
Цитата: feron от 26.11.24, 22:10:59Где то видел как можно обратится к переменным консоли IPython но не найду.
from IPython import get_ipython
ipython = get_ipython()
print(ipython.user_ns["b"])
user_ns - список всех переменных в памяти IPython