2009-04-11 7 views

Répondre

7

Vous pouvez généralement utiliser les deux de manière interchangeable, mais vous devez connaître les différences. Par exemple, multiprocessing.Event est soutenu par un sémaphore nommé, qui est sensible à la plate-forme sous l'application. Multiprocessing.Lock est soutenu par Multiprocessing.SemLock - il a donc besoin de sémaphores nommés.

En substance, vous pouvez les utiliser de manière interchangeable, mais l'utilisation de verrous multi-traitement introduit des exigences de plate-forme sur l'application (à savoir, il ne fonctionne pas sur BSD :))

1

Je ne pense pas. Les verrous Threading sont dans le même processus, alors que le verrou multitraitement serait probablement dans la mémoire partagée.

La dernière fois que j'ai vérifié, le multitraitement ne vous permet pas de partager le verrou dans une file d'attente, qui est un verrou de thread.

1

Oui, vous pouvez utiliser des verrous du module multitraitement normalement dans votre application monoprocesseur, mais si vous utilisez le multitraitement, vous devez utiliser ses verrous.