[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