Re: [Python] gestione della memoria

2012-06-06 Per discussione Fabrizio Mancini
scusa forse per l'ovvietà, ma hai già provato a dare uno sguardo a numpy?
http://numpy.scipy.org/

Ciao Fabrizio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] gestione della memoria

2012-06-06 Per discussione Lorenzo Bottai
Potrei postare il piccolo programma che gira solo con immagini piu' piccole e 
si blocca con matrici grandi, in modo che possiate vedere direttamente. 
Ovviamente utilizzo numpy e per la verità la definizione di matrici anche di 
grandi dimensioni non genera problemi il blocco avviene quando si richiama gdal 
e le altre. 


questo è il programmino: 





-
 
import skimage.graph as graph 
from skimage import filter 






from skimage.morphology import watershed, is_local_maximum 
from scipy import ndimage 






import os, numpy, sys, time,math,csv 
from osgeo import gdal, ogr 
from osgeo.gdalconst import * 
from math import * 






from gdalconst import * 


startTime = time.time() 




os.chdir(r'c:\Users\lorenzo\lidar2') 

gdal.AllRegister() 


# open the image 


inDs1 = gdal.Open('conv_utm2m.tif',GA_ReadOnly) 
print 'legge immagine di convergenza' 




# get image size 
rows = inDs1.RasterYSize 
cols = inDs1.RasterXSize 
bands = inDs1.RasterCount 
transform = inDs1.GetGeoTransform() 


driver = gdal.GetDriverByName('GTiff') 


outDs1 = driver.Create('conv_massimo.tif', cols, rows, 1, GDT_Int32) 
outDs2 = driver.Create('conv_chiome.tif', cols, rows, 1, GDT_Int32) 


print 'righe', rows, 'colonne', cols, 'bande', bands 


driver1 = inDs1.GetDriver() 




convergenza = numpy.ones((rows,cols),numpy.float) 
massimi =numpy.zeros((rows,cols),numpy.int) 
chiome = numpy.zeros((rows,cols),numpy.float) 




inBand1 = inDs1.GetRasterBand(1) 




print 'leggo convergenza' 


convergenza = inBand1.ReadAsArray(0,0,cols,rows).astype(numpy.float) 
print ' fatto ..' 






print ' - calcolo con algoritmo watershed ---' 






print ' cerco il massimo locale sulla convergenza' 
massimi = is_local_maximum(convergenza) 






print ' numero in modo progressimo i massimi' 
markers = ndimage.label(massimi)[0] 


print ' allago le pozze i bacini' 


chiome = watershed(-convergenza, markers) 




print 'lette tutte le righe' 




outBand1 = outDs1.GetRasterBand(1) 
outBand2 = outDs2.GetRasterBand(1) 






# write the data 
outBand1.WriteArray(massimi, 0, 0) 


outBand1.FlushCache() 
stats1 = outBand1.GetStatistics(0, 1) 




outBand2.WriteArray(chiome, 0, 0) 
outBand2.FlushCache() 
stats2 = outBand2.GetStatistics(0, 1) 




outDs1.SetGeoTransform(transform) 
outDs2.SetGeoTransform(transform) 
outDs1 = None 
outDs2 = None 


inDs1 = None 


print 'script took', time.time() - startTime, 'seconds to run' 
- Messaggio originale -

Da: Fabrizio Mancini mr.f...@gmail.com 
A: Discussioni generali sul linguaggio Python python@lists.python.it 
Inviato: Mercoledì, 6 giugno 2012 14:15:04 
Oggetto: Re: [Python] gestione della memoria 

scusa forse per l'ovvietà, ma hai già provato a dare uno sguardo a numpy? 
http://numpy.scipy.org/ 

Ciao Fabrizio 

___ 
Python mailing list 
Python@lists.python.it 
http://lists.python.it/mailman/listinfo/python 

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] gestione della memoria

2012-06-06 Per discussione Giovanni Marco Dall'Olio
2012/6/6 Lorenzo Bottai bot...@lamma.rete.toscana.it

 Ho un problema sulla gestione di matrici di grandi dimensioni. In
 particolare il programma va in errore a gestire 4 immagini 7000 x 7000 di
 tipo float.


Puoi dare una occhiata alla libreria hdf5 per python:
- http://alfven.org/wp/hdf5-for-python/

HDF5 è un formato usato in fisica per gestire dati di grosse dimensioni.
Per esempio, risultati di simulazioni, accelerazioni di particelle,
osservazioni di telescopi. Credo che sia utilizzato anche in altri campi,
come per esempio per le previsioni meteo ed altro.

In principio, ogni file binario HDF5 è un piccolo file system a parte, con
gruppi (directory) e datasets. Dovresti essere in grado di leggere il tuo
dataset su un file HDF5 e lavorare su esso direttamente, senza doverlo
caricare in memoria.

La documentazione è molto buona e l'oggetto utilizzato per rappresentare
una matrice è simile ad un array di numpy, addirittura alcuni metodi sono
in comune e con un po' di fortuna le funzioni che utilizzi non si
renderanno nemmeno conto della differenza.



-- 
Giovanni Dall'Olio, phd student
IBE, Institut de Biologia Evolutiva, CEXS-UPF (Barcelona, Spain)

My blog on bioinformatics: http://bioinfoblog.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] gestione della memoria in python

2008-08-03 Per discussione Lorenzo Marini
Ok ho capito, grazie intendevo proprio quello.

Grazie ancora

Lorenzo

2008/8/2 Enrico Franchi [EMAIL PROTECTED]

 Il giorno 02/ago/08, alle ore 17:52, Lorenzo Marini 
 [EMAIL PROTECTED]
   ha scritto:

  Ciao a tutti
 
  è possibile in python al termine di uno script liberare la memoria (
  cioè eliminare dalla memoria tutti gli oggetti.

 Quando uno script termina, viene reclamata tutta la memoria e viene
 distrutto tutto. O intendevi qualcos'altro?

 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] gestione della memoria in python

2008-08-02 Per discussione Enrico Franchi
Il giorno 02/ago/08, alle ore 17:52, Lorenzo Marini [EMAIL PROTECTED] 
  ha scritto:

 Ciao a tutti

 è possibile in python al termine di uno script liberare la memoria ( 
 cioè eliminare dalla memoria tutti gli oggetti.

Quando uno script termina, viene reclamata tutta la memoria e viene  
distrutto tutto. O intendevi qualcos'altro?

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python