Утечка памяти происходит с Python при создании диагонального массива и выполнении матричных вычисленийPython

Программы на Python
Ответить
Anonymous
 Утечка памяти происходит с Python при создании диагонального массива и выполнении матричных вычислений

Сообщение Anonymous »

P = y.T @ (np.diag(Wc) @ y) Эта строка увеличивает использование памяти в приведенном ниже коде на моем компьютере с Windows 11. Как только я запускаю код, я вижу, что использование оперативной памяти увеличивается и стремительно растет. Но когда я заменяю эту строку на P = y.T @ (y * Wc[:, None]) , использование оперативной памяти становится стабильным. Однако я протестировал тот же код на своем компьютере с Ubuntu 20.04, и он отлично работал для обоих изменений. Я не могу понять странное поведение. Знатоки, помогите пожалуйста.
Ubuntu 20.04; Питон 3.10.12; Numy: 1.26.4
Я могу обновить публикацию версиями Python/numpy для ПК с Windows, как только снова получу к ней доступ.
import numpy as np, psutil, os, time, gc
p = psutil.Process(os.getpid())

def rss_mb(): return p.memory_info().rss / 1024 / 1024

n = 3
kmax = 2*n + 1
Wc = np.random.randn(kmax)
y = np.random.randn(kmax, n)

print("start rss", rss_mb())

i = 0
while True:
P = y.T @ (np.diag(Wc) @ y) #

Подробнее здесь: https://stackoverflow.com/questions/798 ... nd-doing-m
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»