[PIPython] stampare su file

Ernesto e.picardi
Ven 19 Nov 2004 15:16:45 CET


> On Wednesday 12 May 2004 15:38, Ernesto wrote:
>
> > o=open("output.txt","w")
> > for j in xrange(len(results[0])):        #len(results[0])=4950
> >     for i in rank_position(results):        #rank_position(results) è
una
> > funzione che restituisce ina lista di 100 elementi
> >         o.write(str(i[j])+"\t")
> > o.write("\n")
> > o.close()
> >
> > Il tempo di esecuzione dello script incrementa quando attivo questa
parte
>
> IMHO questo codice di per sè non giustifica 40 minuti di esecuzione, a
meno
> che il pc stia scrivendo il file con lo scalpello, in cuneiforme su una
> tavoletta d'argilla ;)
> Sul mio PC con una rank_position trasparente (restituisce results) ci
mette
> 2.7 secondi.
> Io controllerei attentamente cosa combina rank_position, magari usando
> l'ottimo modulo profiler che sta nella libreria standard.
>
> -- 
> http://thisurlenablesemailtogetthroughoverzealousspamfilters.org

Ho trovato l'errore, che in effetti risiedeva nella funzione
rank_position(results), che effettua delle iterazioni su un'altra lista
generata a sua volta da una funzione indipendente. Quando richiamavo i
valori di quest'ultima lista, usavo il comando:

se function() è la funzione che restituisce l'ultima lista

l=[]
for i in range(len(lista)):
    l.append(function()[i])  #riga incriminata

Il codice non è esattamente questo ma rende l'idea.

Aggiungendo la riga

l=[]
new_lista=function()    #riga aggiunta
for i in range(len(lista)):
    l.append(new_lista[i])  #riga modificata

i tempi di esecuzione si riducono drasticamente e lo script impiega circa 30
sec per far tutto!

Penso che l'errore sia questo!
Grazie per i suggerimenti

ernesto.

Non vorrei creare confusione in chi legge, ma vorrei domandarvi se e come è
possibile effettuare il tree traversing in Python e come e se è possibile
usare qualcosa simile ai pointers e records del linguaggio C

grazie ancora

ernesto




More information about the Python mailing list