2009-04-11 5 views

risposta

7

In genere è possibile utilizzare i due in modo intercambiabile, ma è necessario conoscere le differenze. Ad esempio, multiprocessing.Event è supportato da un semaforo denominato, che è sensibile alla piattaforma sotto l'applicazione.

Multiprocessing.Lock è supportato da Multiprocessing.SemLock, quindi necessita di semafori con nome. In sostanza, è possibile utilizzarli in modo intercambiabile, ma l'utilizzo dei blocchi di multiprocessing introduce alcuni requisiti della piattaforma sull'applicazione (ovvero, non funziona su BSD :))

1

Non credo. I blocchi di threading si trovano nello stesso processo, mentre il blocco di multiprocessing potrebbe essere nella memoria condivisa.

L'ultima volta che ho controllato, il multiprocessing non consente di condividere il blocco in una coda, che è un blocco di threading.

1

Sì, è possibile utilizzare i blocchi dal modulo di multiprocessing normalmente nell'applicazione a processo singolo, ma se si utilizza il multiprocessing, è necessario utilizzare i blocchi.