来自threading
模块的锁是否可与multiprocessing
模块中的锁互换?
答案 0 :(得分:7)
您通常可以互换使用这两者,但您需要认识到这些差异。例如,multiprocessing.Event由命名信号量支持,该信号量对应用程序下的平台敏感。
Multiprocessing.Lock由Multiprocessing.SemLock支持 - 所以它需要命名的信号量。从本质上讲,您可以互换使用它们,但使用多处理锁会在应用程序上引入一些平台要求(即,它不能在BSD上运行:))
答案 1 :(得分:1)
我不这么认为。线程锁在同一进程中,而多处理锁可能在共享内存中。
上次我检查过,多处理不允许你在队列中共享锁,这是一个线程锁。
答案 2 :(得分:1)
是的,您可以在单进程应用程序中正常使用多处理模块中的锁,但如果您正在使用多处理,则应使用其锁。