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

alessandro medici alexxandro.medici a gmail.com
Mer 25 Maggio 2016 19:22:28 CEST


Il giorno 25 maggio 2016 19:05, Roberto Polli <robipolli a gmail.com> ha
scritto:

> Entrata a gamba tesa ;)
>
> - Enrico Franchi ha ((quasi) sempre) ragione;
> - multithreading è un bordello in-testabile;
>

Non discuto nessuna delle affermazione. E sulla seconda puoi
anche aggiungere che è maledettamente lenta appena appena
lanci qualche thread di troppo. Per fortuna che per l'IO adesso
c'è asyncio: E' un piacere vedere come viaggia anche sotto stress.


> - pthread_mutex_lock() finisce per diventare CPU bound, cosa che è male;
> - un race nei lock() finisce solitamente male, e capita magari dopo
> qualche mese;
>
> A suo tempo, scrivendo un software in C:
> - mi salvai usando posix message queues implementate da Linux;
> - il gioco funge magicamente da circa 6 anni in un ambiente abbastanza
> critico.
>
> Di recente ho usato multiprocessing e mp.Queue per un software io-bound:
>
>   - funziona senza problemi;
>   - il codice è molto leggibile;
>   - ogni componente è separato e facilmente testabile;
>   - eventuali parti shmem sono gestite dalla PSL che è ben testata e
> mantenuta;
>
> Implementare il tuo multithread | multiprocess con shared memory è un
> ottimo modo per interiorizzare il tutto.
> Non è vietato o sbagliato: è più complesso da gestire e (imho) non
> scala orizzontalmente.
>

Fra un mesetto sarò in ferie ed avrò il tempo per esaminare il tutto con
attenzione.
Troverò questo thread e ci posterò il risultato. Facile che E.F. abbia
ragione e che
mi troverò in un mare di sangue. Ma in ferie e per divertimento si suole
andare al
mare. Se poi sarà di sangue, pazienza: mi porterò anche un pacco di cerotti
:-)

>
> Pax,
>

Nobis. :-)

Alex
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20160525/d50a7105/attachment.html>


Maggiori informazioni sulla lista Python