[Python] Semantica del modulo multiprocessing.

Manlio Perillo manlio.perillo a gmail.com
Lun 30 Dic 2013 16:53:43 CET


On 30/12/2013 16:37, Walter Valenti wrote:
> Mettiamo che abbia una situazione del genere:
>
> ###
>
> from multiprocessing import Process, Manager
>
> class T1(object):
>      def __init__(self):
>          print "init..."
>          self.run()
>      def run(self):
>          print "run",str(os.getpid())
>

Sarņ io che magari non comprendo il "grande disegno", ma fare:

def t1():
     print "run", os.getpid()

usando una semplice funzione, non andava bene? :)

>
> class T2(object):
>      p = Process(target=T1)
>      p.start()
>      p.join()
>
>
> T2()
> ###
> Come faccio in questo caso a condividere una variabile tra il processo padre e i figlio?

Memoria condivisa, come spiegato nella documentazione.

> Se uso il Manager ho il problema che le due classi hanno ognuna il proprio namespace.
>

Certo, č il motivo per cui stai usando i processi, no?
Altrimenti usa i thread.

>
> Ho provato ad usare BaseManager, per crearmi il Manager ad Hoc.
> In questo caso ha funzionato, ma la cosa č bloccante. Se il processo figlio esegue un loop,
> il padre rimane in attesa bloccato.
>

Come lo stai usando?


Ciao  Manlio


Maggiori informazioni sulla lista Python