[Python] Decorated Concurrency - Python multiprocessing made really really easy
alessandro medici
alexxandro.medici a gmail.com
Mer 25 Maggio 2016 18:07:53 CEST
>
>
> >>
> >> Quando parlo di memoria condivisa intendo a dettaglio implementativo,
> >> magari nascosto sotto l'astrazione di una libreria o di un linguaggio.
> >> Ad esempio in Rust alla fine *usi* memoria condivisa, ma il linguaggio
> >> ti permette di ragionare senza pensare a sincronizzazioni esplicite.
> >
> >
> > Concordo.
> >
> > Occorrebbe che il linguaggio potesse chiamare dal sistema, ed ottenere,
> > un area condivisa da vari processi. Ed è proprio questo che mi
> piacerebbe.
> >
>
> Vedi shmget e mmap:
> https://trac.nginx.org/nginx/browser/nginx/src/os/unix/ngx_shmem.c
>
> Ma come ti ha già scritto Enrico, l'accesso diretto ad un area di
> memoria non è banale in Python, a meno di non usare tipi primitivi a
> dimensione fissa.
>
>
Come al solito, passeggiare per la libreria porta spesso a dei bei
risultati:
https://docs.python.org/3.5/c-api/memory.html
spiega anche bene come si potrebbe fare.
>>
> >> In Go puoi usare i channel, ma anche qui alla fine usi la memoria
> >> condivisa, solo che la sincronizzazione è gestita dal runtime.
> >> Ma sempre in Go, spesso la soluzione più semplice e suggerita in
> >> mailing list, è quella di usare un mutex.
> >
> >
> > Funziona davvero (in C) per riscrivere spesso, ma inutile se quel che ti
> > serve (in Python) è lavorare su
> > troppi dati eguali che cambiano ogni tanto :-( e vanno riletti spesso.
>
Sembrerebbe anche qui:
https://docs.python.org/3.5/library/multiprocessing.html#module-multiprocessing.sharedctypes
Che era, in effetti, quel che cercavo.
Di passaggio vedo che pickle è usato solo per Queue in code FIFO ma che
la Pipe sottostante non la usa.
Ok, appena ho un po' di tempo libero mi ci metto a giocare per vedere
l'effetto che fa :-)
Alex
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20160525/df5f6514/attachment.html>
Maggiori informazioni sulla lista
Python