[Python] Decorated Concurrency - Python multiprocessing made really really easy
enrico franchi
enrico.franchi a gmail.com
Sab 21 Maggio 2016 12:51:54 CEST
2016-05-20 13:59 GMT+01:00 alessandro medici <alexxandro.medici a gmail.com>:
>
> - "multiprocessing" implica (a meno di eccezioni notevoli) "pickle di
>> tutto"
>>
>
> ? cioč i dati vengono trasmessi via pickle e non via puntatori? Sure?
> O invece non ho capito cosa affermi? Sorry per la mia ignoranza, ma
> sono anziano e con i capelli MOLTO grigi.
>
Non e' questione di ignoranza, basta rifletterci. Allora...
multi-*processing*.
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
foo = Bar()
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'].
Segue che ... no, non possono essere semplici puntatori. "Come" viene fatto
non puo' essere derivato da principi primi. E si, effettivamente e' Pickle.
Per inciso... presente il Manager di multiprocessing (e tutta la parte di
"memoria condivisa" di multiprocessing)?
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...
--
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML č stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20160521/aec462a6/attachment.html>
Maggiori informazioni sulla lista
Python