2010-03-01 5 views
2

내가 여기 뭔가 오해했을 수도 있다고 생각하지만 ... 여기 있습니다.Python (Matplotlib)에서 모듈 참조 재사용

import pylab as pyl 
... 
psdResults = pyl.psd(inputData, NFFT=512, Fs=sampleRate, window=blackman) 

그러나 36 시간마다 반복되고있어 : 내가 루프 내부하기 matplotlib에서 PSD 방법을 사용하고

, 내가 아무것도 플롯 만들기 아니에요, 그냥 그렇게, 수치 결과를 원하는

시간이 지남에 따라 프로그램을 실행할 때 느린 메모리 누수가 발생하므로이를 모니터링하기 위해 'heapy'를 사용하고 함수를 실행할 때마다 36 개를 추가합니다. 힙 :

dict matplotlib.line.Line26 
dict matplotlib.transforms.CompositeAffine2D 
dict matplotlib.path.Path 

psd 메서드를 사용할 때마다 어딘가에 사전을 추가하기 만하면됩니다. 메모리를 효과적으로 지우는 것, 즉 각 루프를 재설정하여 아무 것도 저장하지 않으려 고합니다.

나는 heapy를 오해 할 수는 있지만, 단지 psd 방식을 사용하고 싶지만 필라프가 단지 각 루프를 성장시키고 있다는 것이 꽤 분명해 보입니다. 나는 그 자체로 결과를 저장하고 싶지 않습니다!

건배

답변

3

이 시도 :

from matplotlib import mlab 
psdResults = mlab.psd(inputData, NFFT=512, Fs=sampleRate, window=blackman) 

가 그 상황을 개선 하는가를?

+0

훌륭함, 그렇습니다 ... 또한 가져 오기 유형의 차이점도 강조 표시되었습니다. 고마워! 그냥 지금 다른 메모리 누수를 수정해야 해 ..! –

+0

실제로 실제로 모든 것이 수정되었습니다. 굉장해. –

+0

와우, 훌륭해! ipython을 사용한다면'pylab.psd ?? '명령은 소스 코드를 보여줍니다. 거기에서'psd'를'Axes', 그리고'mlab'을 추적했습니다. 이것이 ipython 인트로 스펙 션이 실제로 일어나고있는 것을 결정하는 방법입니다. –