2011-12-24 23 views
15

Che cos'è la differenza tra multiprocessing.Event e multiprocessing.managers.SyncManager.Event. Quando lo uso? Perché esistono due oggetti diversi?python: multiprocessing Event

stessa domanda per altri oggetti simili esistenti in multiprocessing direttamente e anche in Manager (Lock, etc.)

risposta

11

Purtroppo, l'unica risposta data non è molto corretto e gli altri non è stato dato.

L'ho cercato da solo e ho scoperto che è possibile utilizzare multiprocessing.Event per sincronizzare i processi, è tutto a posto.

Event e altri oggetti da multiprocessing.Manager esistono per essere in grado di sincronizzare cose tra processi che gira su diverse macchine tramite basi sotto il cofano. Possono anche essere utilizzati sincronizzano su un'unica macchina, ma meno efficiente per questo che solo utilizzando oggetti sincronizzazione da multiprocessing.synchronize (come Event e Lock e altri)

+1

È possibile utilizzare i Manager utente sulla stessa macchina, l'idea è di fornire oggetti proxy che possono interagire con le risorse condivise reali pubblicate attraverso il Gestore. In un certo senso è una specie di "RPC-lite" – edomaur

+0

Potresti dire dove hai trovato quell'informazione? – utapyngo

+0

@utapyngo: nella sezione "16.6.1.4 Condivisione dello stato tra processi", doc di 2.7, in particolare leggi l'ultima parte. E anche alcuni tutorial su googlatura e lettura – zaharpopov

1

multiprocessing.Manager è essenzialmente un processo specializzato che creerà istanze di multiprocessing primitive di sincronizzazione su richiesta nel proprio spazio di indirizzamento e consente di accedervi tramite proxy RPC. I primitivi si comportano allo stesso modo e hanno la flessibilità aggiuntiva di essere accessibili da host remoti (usando TCP nel caso remoto).