LINUX.ORG.RU

В какой момент освобождается память?

 


0

1

Использую python для решения всяких вычислительных задач по работе. Опыта пока не много.

Иногда возникает ситуация, когда не хватает 4 гига оперативной памяти, в связи с этим возникает следующий вопрос: очень часто в процессе работы программы используются временные переменные, которые изменяются в теле цикла и могут содержать много данных, а после цикла уже не нужны совсем. Собственно вопрос: когда они уничтожаются gc? Сразу по окончанию цикла (если их имя не упоминается дальше в коде)? Или только в конце выполнения (обычно всё выполение занимает несколько минут)? Нужно ли им делать del вручную?

★★★★★

Последнее исправление: vitruss (всего исправлений: 1)
Ответ на: комментарий от true_admin

Думаю, скорее случай, когда есть данные разных типов, которые сложно объединить в один np.array.

Во например: в моём случае есть координаты точек, которые логично держать во float, но есть ещё «свойства» этих точек, которым float не особо нужен, а иногда и противопоказан. Даже если всё это «транслировать» фо float и объединить в один np.array, то как быть дальше я не представляю. Координаты надо крутить-вертеть умножая на матрицу, но свойства-то при этом не отбросишь? Из-за наличия свойств изменяются придётся конструировать спецаильные матрицы вращения, трансляции и т.п. Ну т.е. можно сделать сечение, но всё равно не всегда получается делать операции inplace. По итогу приходится делать несколько np.array и постоянно следить, чтобы они были «синхзронизорованны». Как быть с вероятностными процессами, кроме как обходить все точки по очереди, я вообще слабо представляю.

Если подскажешь варианты - я буду рад.

vitruss ★★★★★
() автор топика
Последнее исправление: vitruss (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.