Aşağıdaki basit dört satırlı kod benim Python bir bellek sızıntısı üreten 2.6.6/NumPy 1.7.0 setup/MKL 10.3.6: Her bir operasyon ileNumPy + MKL ile bu dört satırlık bellek sızıntısı nasıl önlenir?
import numpy as np
t = np.random.rand(10,10)
while True:
t = t/np.trace(t)
, kullanılan bellek büyüklüğüne göre büyür 10x10 matris. Ancak, bir NumPy 1.4.1/ATLAS kurulumunu kullandığımda böyle bir davranış yoktur.
ben ille otomatik bellek boşaltma değil MKL okudum, bu yüzden bu blowup nedeni sanırım. NumPy'yi (derlemeden önce veya sonra) değiştirmenin basit bir yolu var mıdır, öyle ki bu dört liner iyi çalışır mı? np.show_config() arasında
Çıkış
numpy 1.7.0
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$MKLPATH/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['$MKLPATH/include']
blas_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$MKLPATH/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['$MKLPATH/include']
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$MKLPATH/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['$MKLPATH/include']
blas_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$MKLPATH/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['$MKLPATH/include']
mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$MKLPATH/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['$MKLPATH/include']
. Belki de onların hata izleyicisine veya sadakatli 1.8'i denemeye daha fazla şansınız olur mu? – entropy
ilginci etkisi hala döngü içinde 'gc.collect' ile olur ([gc - çöp toplama] (http://docs.python.org/2/library/gc.html)) bir numpy hatadan işaret. Belki sorun takipçileri üzerinde yükselmeye değer mi? – danodonovan
Teşekkürler, bu sorunu numpy hata izleyicisine gönderdim. Orada olumlu bir cevap alır almaz bu soruyu kapatacağım. –