2016-05-27 23:52 GMT+02:00 alessandro medici <alexxandro.med...@gmail.com>: > Stasera, giusto per prender sonno, stavo leggendo Python Parallel > Programm.... etc. etc. Comprato in una svendita online col 75% di sconto :-) > > [NON E' PUBBLICITA': Scritto bene nella parte teorica e nello spiegare, a > parte qualche sassolino. Almeno per quel che ne posso dire io. Molto meno > bene (quasi pessimo?) nel codice stampato, poco meglio lo scaricabile. Poco > importa però e forse: sciocchezze e questioni di stile, e mi sembra anche > che da qualche parte scriva che il suo testo non sia proprio da neofiti] > > Ma sorry: vedo anche due cose: > > 1° è l'uso estensivo dei dizionari creati nel processo padre ed aggiornati > dai processo figlio, sia nelle voci che nel contenuto. Un giro rapido e, > stupore, non solo i dizionari, ma anche liste.
Scusa, ma hai letto la documentazione del modulo multiprocessing? Ci sono due modi per condividere oggetti: https://docs.python.org/3/library/multiprocessing.html#sharing-state-between-processes Il primo utilizza memoria condivisa protetta da lock, e funziona solo per tipi primitivi: https://docs.python.org/3/library/multiprocessing.html#shared-ctypes-objects Il secondo fa uso essenzialmente di message passing: https://docs.python.org/3/library/multiprocessing.html#managers Il modulo offre semplicemente degli oggetti che si comportano come dict o come list > L'unica cosa che non ho visto > fare è applicare il metodo __del__, cosa comprensibile, peraltro, almeno per > la salute mentale del memory manager. Non c'è nessun memory manager, e __del__ è supportato senza problemi perchè altrimenti non sarebbe un dict. > Ecco: basterebbe FORSE creare un'altro dizionario delle voci che andrebbero > cancellate e poi, magari, farlo dopo? ? > Ok, 1° compito prima delle vacanze: Ma i dizionari sono pressoché gli unici > oggetti composti che si possono aggiornare in multiprocess? > Vedi sopra. Semplicemente dict e list sono predefiniti perchè i più richiesti. > La 2° viene dall'altra idea: > Mi era venuto subito in mente quando lessi l'articolo che postai qualche > giorno addietro, quel qualcosa sul cambiare le ruote alla bici mentre si > pedala: > http://mathamy.com/python-wats-mutable-default-arguments.html > cosa succederebbe se cambiassi le variabili di default di una classe o di un > metodo mentre la loro progenie è occupata in un processo? Magari in una ABC > genitore? > > Forse nulla. Forse dipenderà dal metodo con cui si lanceranno i processi? > (https://docs.python.org/3.5/library/multiprocessing.html#the-spawn-and-forkserver-start-methods > usa inherits ma non chiarisce se intende 'copiare' o 'linkare') > > [...] Ti consiglio di leggere un buon libro su come ci si interfaccia con il kernel di un sistema UNIX. Ad esempio The Linux Programming Interface: A Linux and UNIX System Programming Handbook o il classico Advanced Programming in the UNIX Environment Ciao Manlio _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python