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