【发布时间】:2019-10-03 10:28:56
【问题描述】:
运行以下代码时:
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 密度),为什么在第一个测试中内存消耗比第二个高得多?
提前感谢您的回答!
【问题讨论】: