P = y.T @ (np.diag(Wc) @ y) Эта строка увеличивает использование памяти в приведенном ниже коде на моем компьютере с Windows 11. Как только я запускаю код, я вижу, что использование оперативной памяти увеличивается и стремительно растет. Но когда я заменяю эту строку на P = y.T @ (y * Wc[:, None]) , использование оперативной памяти становится стабильным. Однако я протестировал тот же код на своем компьютере с Ubuntu 20.04, и он отлично работал для обоих изменений. Я не могу понять странное поведение. Эксперты, пожалуйста, помогите.
Ubuntu 20.04 нет anaconda/python venv; Питон 3.10.12; Numy: 1.26.4
Windows 11 Business 10.0.26100 под управлением среды anaconda: Python 3.13.9; Нампи: 2.4.0
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