L'utilizzo di più processi consente di sfruttare più core della CPU contemporaneamente, mentre, in CPython, l'utilizzo dei thread non avviene (i thread si alternano utilizzando un singolo core della CPU), quindi, se si utilizza un lavoro intensivo della CPU e assolutamente vuoi usare i thread, dovresti considerare Jython o IronPython; con CPython, questa considerazione è spesso sufficiente per influenzare la scelta verso il modulo multiprocessing
e lontano da quello threading
(offrono interfacce abbastanza simili, perché multiprocessing
è stato progettato per essere facilmente messo in luogo al posto di threading
).
Al netto di questa considerazione cruciale, i thread potrebbero spesso essere una scelta migliore (in termini di prestazioni) su Windows (dove creare un nuovo processo è un'attività pesante), ma meno spesso sulle varianti di Unix (Linux, versioni BSD, OpenSolaris, MacOSX, ...), dal momento che creare un nuovo processo è più veloce lì (ma se usi IronPython o Jython, dovresti controllare, sulle piattaforme che ti interessano, che questo si applica ancora alle macchine virtuali in questione - CLR con .NET o Mono per IronPython, la tua JVM di scelta per Jython).
fonte
2010-03-20 15:00:24
Hmm due risposte contraddittorie ... – kennytm
@Kenny TM: Non sorprende. "Meglio" non è definito nella domanda. Inoltre, è altamente discutibile per la maggior parte delle definizioni di "Migliore". –