[Python] saluti e prima domanda sulle list comprhension

Java quilospam a email.it
Dom 27 Gen 2008 18:22:39 CET


> Male: perché usare un thread? Ogni programmatore che si rende conto  
> che spesso e volentieri i thread sono  la risposta sbagliata ad un non  
> problema è una speranza per un futuro migliore.
>
> Diciamocela tutta: se in Java si programma con i thread (a memoria  
> condivisa), questo non vuole dire che debba essere buona pratica  
> ovunque. Io in particolare per quello che fai tu userei multiprocesso.  
> No: mento sapendo di mentire, forse userei un'altra cosa, ma non  
> voglio complicarti ora la vita.
>
>
>   
No, il proff vuol poter lanciare più processi crawler in parallelo e poi 
vuole che si analizzino i risultati finali.
Poi io ho pensato di realizzare la cosa con un programma principale che 
esegue un ciclo nel quale accetta dei comandi dall'utente. Se il comando 
è "crawler" allora aprte il thread. Poi conterrà anche i comandi per 
generare la rete sociale dai risultati del crawling (salvati su file) e 
per altre operazioni
> brrr... ma così, dentro un thread prendi input da un utente?
> Se l'input lo prendi fuori, falla *fuori* la conversione,  
>   
L'input arriva da "fuori" è un parametro del costruttore del thread, e 
anche i vari print mi servono solo per debug, poi li levo tutti e metto 
il try-except
> eventualmente con un gestore di eccezioni.
>   
per l'appunto ;-D
> Ehm. Guarda che fai: temp = results. Per cui entrambi puntano allo  
> stesso oggetto.
>   
me ne ero accorto :-(
Chissà perché ero convinto che così facendo avrei copiato i valori dda 
una lista all'altra invece di farle puntare tutte allo stesso oggetto. 
In effetti non è un errore di python, ma di programmazione in generale (>_>)
> Una nota stilistica: l'uso che fai della list comprehension è IMHO  
> sbagliato. Una list comprehension (pur essendo completamente generale)  
> tipicamente viene usata per generare un nuovo array. Ha insomma un  
> significato in cui il valore di ritorno della funzione ha *profondo*  
> significato (e spesso questo nuovo array viene manipolato in seguito).
>
> Tu invece la stai chiamando con un metodo che restituisce None. Il tuo  
> codice anche se funzionasse, sarebbe 'bruttino'. Riscriviamolo con un  
> for.
>
> for video in temp:
>      results.extend(self.parseUrl(vide))
>   
>   
il for è la prima cosa a cui penso (dopo anni di c, c++, java etc etc) 
ma mi "forzo" ad usare le list comprecose per impararle bene
> Ti suggerisco di studiarti bene i fondamentali. 
>
>   
Naaaa i "fondamentali" sono tutti i linguaggi che già conosco :-p



More information about the Python mailing list