2
在我的程序中我有两个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)
所以,当我运行上面的程序中,我看到,在之后的某个点使用不停止生长的内存。
它的一个显着部分可能是由于打印它,因为大多数控制台仍然需要存储它们(即0-10.000.000 +'\ n'的数字)。 – Delioth
当我评论c = a.todense()行时,使用的内存是不变的。 – pjdrm