[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