在我的程序中,我有两个scipy.sparse.csr_matrix。一个只有一行而另一个实际上很大。在程序的每次迭代中,我添加和减去矩阵的行。最终我需要在单行矩阵上使用.todense()。我注意到只是调用这个函数会使用过的内存增长没有明显的原因。我需要做很多迭代,并且不能承受这个内存泄漏。
我能够编写一个简单的程序来说明我的问题:
import numpy as np
from scipy import sparse
a = sparse.csr_matrix(np.matrix(np.random.random((1, 250))))
b = sparse.csr_matrix(np.matrix(np.random.random((250, 250))))
for i in range(10000000):
a = a - b[4]
c = a.todense()
print(i)
因此,当我运行上述程序时,我发现在某一点之后,使用的内存不会停止增长。