Ciao a tutti, mi stò studiando un po' l'architettura di python e sono dunque al GIL. Premetto che il mio scopo è puramente a scopo didattico, non sono qui a parlare di quanto sia bello o brutto il GIL, ma sentitevi liberi di esprimere qualsiasi parere anche personale ;-) Guardando indietro nei messaggi di questa ML ho trovato altro e mi sono scaricato "Inside the Python GIL" di David Beazley. L'ho quasi letto tutto (mi mancano proprio le ultime tre-quattro pagine) e ho voluto ripetere i test. Ho riscritto la medesima funzione CPU-bound (non mi viene un equivalente italiano, forse "che sfrutta la sola CPU"?) [1] e l'ho adattata a tre test: 1) non posto il sorgente in quanto è un semplice test sequenziale "count(100000000); count(100000000)" 2) usando il multithreading ed effettivamente si nota la differenza (anche a me 2x più lento o peggio) [2] 3) usando la fork [3]
Ho aggiunto il test per la fork in quanto creando un nuovo processo il GIL non dovrebbe dare problemi, giusto? Beh ecco i risultati sul mio P4 3,00GHz: 1) sequenziale ---------------------- real 0m35.363s user 0m34.831s sys 0m0.087s ---------------------- 2) threaded ---------------------- real 1m30.482s user 1m25.342s sys 0m28.125s ---------------------- 3) forked ---------------------- real 0m52.938s user 1m30.927s sys 0m0.395s ---------------------- Come mai con il fork c'è comunque un rallentamento? Dipende solamente dal tempo richiesto per creare un nuovo processo (e comunque 19 secondi mi sembrano troppi) o c'è qualcos'altro? [1] http://paste.pocoo.org/show/kjq0U2opWJIAxm3bqYHK/ [2] http://paste.pocoo.org/show/7LAdKtPHLtAjiGltOzkf/ [3] http://paste.pocoo.org/show/QCdRBl0ODL3M2QsZIH73/ A presto, ciao! -- Alessandro A.
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python