[Python] Applicazione multithreading
Enrico Franchi
enrico.franchi a gmail.com
Mer 21 Mar 2007 17:11:04 CET
On 19/mar/07, at 13:36, Daniele Varrazzo wrote:
> Quelle si appoggiano su twisted: a quelle 20 righe devi aggiungere
> l'imparare twisted, che non è esattamente una passeggiata. Per te è
> ovvio
> perché probabilmente mangi pane e twisted, ma non puoi dire che sia
> facile
> ad una persona che sta imparando il Python ora.
Scusa eh, ma imparare ad usare *bene* i thread è complessivamente
più complesso che imparare Twisted. Chiaramente IMHO.
Una delle ragioni pratiche è che i thread (intesi 'alla Java', ma
Python non
differisce) fuori dalle librerie di basso livello sono una pessima
idea di per se.
Io non ho nulla contro i thread e non ho nulla contro la
programmazione stateful.
Peccato che mettere insieme le due cose sia problematico.
Allo stesso modo la glicerina per i fatti suoi non da problemi.
L'acido nitrico e quello
solforico pure di per se non sono un grosso problema. Mettendo tutti
e tre
insieme però creiamo qualcosa di altamente instabile.
Se i thread se uno può risparmiarseli, gli conviene.
Sono una moda (e una pessima abitudine) dei Javisti. Altri ambienti più
furbini cercano in tutti i modi di virare su modelli asincroni o se
il parallelismo è effettivamente necessario a processo.
Se uso i threads, è perchè non ho *nessuna* altra scelta. E se li uso
faccio
in modo che comunichino attraverso code (scritte in modo threadsafe)
oppure
attraverso degli observer (pure loro già scritti in modo thread-safe).
Nota che nel modello con gli observer sto in pratica facendo
rientrare la
programmazione asincrona dalla finestra: il thread serve solo a non
bloccare
in caso di operazioni atomiche lunghe il main loop (bloccando per
esempio
interattività).
Il tuo esempio probabilmente avrebbe funzionato altrettanto bene con un
pool di processi, IMHO.
-enrico
Maggiori informazioni sulla lista
Python