You can usually use the two interchangeably, but you need to be aware of the differences. For example, multiprocessing.Event is supported by a semaphore that is platform-sensitive under the application.
Multiprocessing.Lock is supported by Multiprocessing.SemLock - so it needs semaphores with a name. In essence, you can use them interchangeably, but using multiprocessor gateways introduces some requirements for the application platform (namely, it does not work on BSD :))
jnoller
source share