使用scipy.eigs进行内存泄漏

时间:2016-04-19 09:43:25

标签: python memory-leaks scipy sparse-matrix eigenvalue

我有一组大的非常稀疏的矩阵,我试图找到对应于特征值0的特征向量。从根本问题的结构我知道必须存在一个解决方案,零也是最大的特征值。

为了解决这个问题,我使用带有参数的scipy.sparse.linalg.eigs

val, rho = eigs(L, k=1, which = 'LM', v0=init, sigma=-0.001)

其中L是矩阵。然后我为不同的矩阵多次调用它。起初我遇到了一个严重的问题,因为我越来越多地调用函数时内存使用率会增加。似乎eigs并没有释放它应该的所有内存。每次使用gc.collect()时,我都会通过调用eigs来解决问题。

但是现在我担心内部存储器也没有被释放,天真地我希望使用像Arnoldi这样的东西在算法进行时不应该使用更多的内存,它应该只是存储矩阵和当前一组Lanczos向量,但我发现当代码仍在eigs函数内时,内存使用量会增加。

有什么想法吗?

0 个答案:

没有答案