[Python] barra di caricamento

Enrico Franchi enrico.franchi a gmail.com
Gio 13 Ott 2011 18:15:35 CEST


Freeze NorthPole wrote:

> è vero che la mia mail è stata poco dettagliata e lo ammetto senza
> problemi dato che l'ho scritta quando ormai stavo dormendo in piedi, ma
> personalmente avrei apprezzato di più una mail del tipo: "non riusciamo
> ad aiutarti perchè sei stato poco preciso, dacci maggioni info...."

Posto che fai benissimo ad esprimere il tuo punto di vista sulla 
questione, penso di poterti rispondere come la penso. Ovvero, 
sinceramente un LMGTFY non e' un'offesa... e' un rimbrotto. Poi possiamo 
anche decidere che rimbrottare non va bene e dobbiamo essere piu' 
formalmente cortesi come con la formula da te suggerita.

Ma voglio dire, siamo dei tecnici, non degli avvocati, con tutto il 
rispetto per gli avvocati. Nelle ml tecniche ci diamo tutti del tu, 
senza problemi (anche se  in Italia sarebbe uso usare la forma di cortesia).

Insomma, internet e specialmente i luoghi tecnici hanno un po' delle 
regole loro. Aprire una mail qui con:

"Gentili Signori, ..."

sarebbe piuttosto surreale. E' un ambiente molto informale. Che so, su 
Usenet capita che su it.scienza.matematica scrivono un paio di 
professoroni e tu gli rispondi dandogli del tu. Anche se, magari, se 
fossero i tuoi docenti in universita' gli daresti del lei e scriveresti 
con un altro tono.

E cosi' via... prendiamo il bello e il brutto del mezzo. Siamo 
informali... finche' non si e' esplicitamente offensivi, via... 
tolleriamo. Questa e' la mia posizione, non condivisibile, al limite.

Quindi amen... ti sei preso un LMGTFY e fine della storia.
Ribadisco, tanti tanti anni fa, visti un po' di RTFM e combriccola ho 
capito che, semplicemente, bisogna essere molto precisi.

> ci vorrebbe qualcosa come un processo parallelo...

Sono piu' d'accordo con chi ha suggerito callbacks e compagnia. Non hai 
davvero bisogno di parallelismo (threads o processi), basta un hook.

Per dire, guarda l'API "gemella" di urllib. Gemella nel senso che 
risolve il problema duale: il download.

urllib.urlretrieve = urlretrieve(url, filename=None, reporthook=None, 
data=None)

reporthook e' un aggeggio che ti viene chiamato quando un po' di dati 
sono stati presi. Ti agganci li e gli fai fare qualcosa che per te ha 
senso (e.g., ristampare la tua barra di scorrimento, aggiornare la GUI, 
etc etc etc).

Fai due prove con urllib e vedi come e' molto facile da usare.

Bene... storbinary e storlines ti offrono un parametro "callback" che 
viene chiamato quando succede qualcosa di rilevante (mandato un 
blocco/mandata una linea).

-- 
.
..: -enrico-



Maggiori informazioni sulla lista Python