При запуске следующего кода:
import numpy as np
import scipy.sparse
import time
def test():
m = 10000
n = 10000
for i in range(5):
A = scipy.sparse.random(m, n, density=0.1, format='csr')
x = np.random.randn(n)
Ax = A.dot(x)
time.sleep(2)
if __name__ == "__main__":
test()
Я заметил, что потребление памяти линейно увеличилось до> 4,8 ГБ!
Я снова протестировал со следующей функцией:
def test2():
m = 10000
n = 10000
for i in range(5):
print(i)
A = np.random.rand(m, n)
x = np.random.randn(A.shape[1])
Ax = A.dot(x)
time.sleep(2)
Потребление памяти линейно увеличилось до> 800 МБ.
У меня есть два вопроса:
Почему потребление памяти линейно увеличивается в каждом случае? На каждой итерации не объявлялись новые переменные ...
Почему в первом тесте потребление памяти намного выше, чем во втором, учитывая, что матрицы являются разреженными (всего 0,1плотность)?
Заранее благодарю за ответы!