<div dir="ltr">Stasera, giusto per prender sonno, stavo leggendo Python Parallel Programm.... etc. etc. Comprato in una svendita online col 75% di sconto :-)<div><br></div><div>[NON E' PUBBLICITA': Scritto bene nella parte teorica e nello spiegare, a parte qualche sassolino. Almeno per quel che ne posso dire io. Molto meno bene (quasi pessimo?) nel codice stampato, poco meglio lo scaricabile. Poco importa però e forse: sciocchezze e questioni di stile, e mi sembra anche che da qualche parte scriva che il suo testo non sia proprio da neofiti]</div><div><br></div><div>Ma sorry: vedo anche due cose:</div><div><br></div><div>1° è l'uso estensivo dei dizionari creati nel processo padre ed aggiornati dai processo figlio, sia nelle voci che nel contenuto. Un giro rapido e, stupore, non solo i dizionari, ma anche liste. L'unica cosa che non ho visto fare è applicare il metodo __del__, cosa comprensibile, peraltro, almeno per la salute mentale del memory manager. </div><div>Ecco: basterebbe FORSE creare un'altro dizionario delle voci che andrebbero cancellate e poi, magari, farlo dopo?</div><div>Ok, 1° compito prima delle vacanze: Ma i dizionari sono pressoché gli unici oggetti composti che si possono aggiornare in multiprocess?<br></div><div><br></div><div>La 2° viene dall'altra idea:</div><div>Mi era venuto subito in mente quando lessi l'articolo che postai qualche giorno addietro, quel qualcosa sul cambiare le ruote alla bici mentre si pedala:</div><div><a href="http://mathamy.com/python-wats-mutable-default-arguments.html" target="_blank" style="font-size:12.8px">http://mathamy.com/python-wats-mutable-default-arguments.html</a><br></div><div>cosa succederebbe se cambiassi le variabili di default di una classe o di un metodo mentre la loro progenie è occupata in un processo? Magari in una ABC genitore? <br></div><div><br></div><div>Forse nulla. Forse dipenderà dal metodo con cui si lanceranno i processi? (<a href="https://docs.python.org/3.5/library/multiprocessing.html#the-spawn-and-forkserver-start-methods">https://docs.python.org/3.5/library/multiprocessing.html#the-spawn-and-forkserver-start-methods</a> usa inherits ma non chiarisce se intende 'copiare' o 'linkare')</div><div><br></div><div>Forse salto in aria :)</div><div><br></div><div>E poi vedo Enrico leggermi, e che già chiede per me a viva voce un TSO, pensare ancora più a ragione un 'ma chi me lo fa fare'? Eddai: forza e coraggio Enrico, ormai sono sulla via della tomba, che quella con la r in più ormai la vedo raramente :-(</div><div><br></div><div>E però sono curioso. E per due mani di pittura dovrebbero bastare poche ore, come disse il pittore prima di scoprire che si trattava della torre Eiffel.</div><div><br></div><div>Alex </div><div><br></div><div>ps: la vera perla però è che ho trovato anche che non mi occorrerà sprecare tempo e denaro nel mare di sangue per avere un'area dati shared tra processi, esiste già, si veda:</div><h3 style="font-family:'Lucida Grande',Arial,sans-serif;font-weight:normal;color:rgb(26,26,26);border:0px;margin:0px;padding:0.3em 0px;font-size:22.4px">17.2.1.5. Sharing state between processes<a class="" href="https://docs.python.org/3.5/library/multiprocessing.html#sharing-state-between-processes" title="Permalink to this headline" style="color:rgb(99,99,187);text-decoration:none;font-size:0.8em;padding:0px 4px">¶</a></h3><div>nella pagina che cito poco sopra e poi si dia un ctrl-f su shared memory.</div><div><br></div><div>Evidentemente il timore del seg-fault non li ha fermati. Ed, a me, averla organizzata come array mi va benissimo: il mappare dati in modo diverso nel Cobol era una delle cose più divertenti da fare nell'epoca di quando ero un ragazzino. Almeno quando ero vestito.</div><div>(Al riguardo dei vestiti il BDFL ed io il  abbiamo le stesse idee. E anche la stessa età :-(  :)</div><div><br></div><div><br></div></div>