> > > >> > >> 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
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python