<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-05-20 13:59 GMT+01:00 alessandro medici <span dir="ltr"><<a href="mailto:alexxandro.medici@gmail.com" target="_blank">alexxandro.medici@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"></blockquote></span><span class=""><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
- "multiprocessing" implica (a meno di eccezioni notevoli) "pickle di<br>
tutto"<br></blockquote><div><br></div></span><div>? cioè i dati vengono trasmessi via pickle e non via puntatori? Sure?</div><div>O invece non ho capito cosa affermi? Sorry per la mia ignoranza, ma</div><div>sono anziano e con i capelli MOLTO grigi. </div></div></div></div></blockquote><div><br></div><div>Non e' questione di ignoranza, basta rifletterci. Allora... multi-*processing*.</div><div>Diciamo che e' sano assumere che siano piu' processi, ok? Quindi piu' processi hanno spazi di indirizzamento separati (visto che sono appunto processi multipli). Quindi... cosa se ne fa un processo di un puntatore a uno spazio di indirizzamento a cui non ha accesso? Diciamo nulla? Ah... ma c'e' la memoria condivisa... ecco, ora riflettiamo anche su questa cosa. Quando tu scrivi</div><div><br></div><div>foo = Bar()</div><div><br></div><div>tu stai dicendo a Python di creare un oggetto. Bene. Non gli stai dicendo dove crearlo. Il che vuole dire che non e' in memoria condivisa. L'alternativa sarebbe immaginare che Python ficcasse *tutto quanto* in memoria condivisa... il che vorrebbe anche dire che ogni singolo pezzo di dato di Python dovrebbe avere qualche lock che lo protegge... altro che GIL: avremmo gia' threading granulare [ah, certo, potremmo anche immaginare che schiaffa tutto in memoria condivisa e c'e' un GIL su questo... ma allora fare multithreading o multiprocessing in Python dovrebbe essere uguale, cosa che no ne'].</div><div><br></div><div>Segue che ... no, non possono essere semplici puntatori. "Come" viene fatto non puo' essere derivato da principi primi. E si, effettivamente e' Pickle.</div><div><br></div><div>Per inciso... presente il Manager di multiprocessing (e tutta la parte di "memoria condivisa" di multiprocessing)?</div><div>Bene... di condiviso non c'e' nulla. Funziona con scambio di messaggi (cioe' piglia gli oggetti, li serializza e li spara in giro). Insomma, e' un giocattolino che e' comodo da usare e da ragionarsi come la peggiore delle memorie condivise ed e' veloce come il piu' lento dei message passing. Un win win... per i linguaggi concorrenti...</div><div><br></div><div><br></div></div><br clear="all"><div><br></div>-- <br><div class="gmail_signature"> .<br>..: -enrico-</div>
</div></div>