JuliaPy / JuliaPy/PyPlot.jl

PyPlot memory deallocation problem

Aperta
#111 21 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Julia
Stelle
488
Fork
90
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hi,

when batch saving multiple figures with 'savefig()' a large amount of memory is
allocated and I am not able to free it afterwards without closing my julia session.

Basically I am doing:

``` julia
for ff=101:150
figure(1)
PyPlot.clf()
imshow(imagg,extent=[0,350,0,580],aspect=1);
imshow(gridG[1:18,1:35,ff],interpolation="bicubic",cmap="jet",origin="lower",extent=[14,339,158,300],alpha=.5,aspect=.8)
PyPlot.autoscale("off")
plt.axis("off")
plt.title("Absolute value @" *string(ff)* " Hz")
savefig("~/pianoMeas1/klavierKlopfTest_"*string(ff)*".png");
plt.close()
end
```

The memory usage before the loop is ~2gb, after the loop it is ~4gb.

I also tried

``` julia
figurN=open("~/pianoMeas1/klavierKlopfTest_"*string(ff)*".png","w")
plt.savefig(figurN);
close(figurN)
```

giving the same result.

When overwriting existing files the memory usage stays constant so I believe the
"memory-overflow" occurs while allocating space for the file, but this is just a shot in the dark.

My julia version is:

``` julia
versioninfo()
Julia Version 0.4.0-dev+2496
Commit 89f89e1* (2015-01-05 09:04 UTC)
DEBUG build
Platform Info:
System: Linux (x86_64-unknown-linux-gnu)
CPU: Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge)
LAPACK: libopenblas
LIBM: libopenlibm
LLVM: libLLVM-3.3
```

Any ideas, pointers are appreciated as I am not shure where to start debugging this.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Reproduce the reported loop using PyPlot.savefig, plt.close, and the Julia versioninfo shown in the issue, comparing new output files with overwritten files. Trace the savefig and close entry points across the Julia/Python boundary and measure memory after each iteration; done means repeated saves no longer leave the additional allocation behind.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
julia, python
Ambito
data-visualization
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.