当运行以下代码时:
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.8GB!
我用以下函数进行了再次测试:
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)
内存消耗呈线性增长,达到了> 800Mb。
我有两个问题:
为什么每次迭代内存消耗会呈线性增长?没有声明新变量……
为什么在第一个测试中,即使矩阵是稀疏的(只有0.1密度),内存消耗也比第二个测试高得多?
感谢您的回答!