[Python] Decorated Concurrency - Python multiprocessing made really really easy

Manlio Perillo manlio.perillo a gmail.com
Mer 25 Maggio 2016 15:19:42 CEST


2016-05-25 1:43 GMT+02:00 alessandro medici <alexxandro.medici a gmail.com>:
>
>
>>
>>
>> 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.

>>
>> 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.

Inutile? Sei davvero sicuro?

Il mutex è inutile solo se i dati, una volta creati, sono imutabili.
Ma non mi sembra il tuo caso.
Per un pattern di accesso con uno o pochi scrittori e molti lettori,
hanno inventato apposta il:
https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock


Ciao  Manlio


Maggiori informazioni sulla lista Python