Python:来自`threading`和`multiprocessing`的锁可以互换吗?

时间:2009-04-11 07:37:25

标签: python multithreading locking multiprocessing

来自threading模块的锁是否可与multiprocessing模块中的锁互换?

3 个答案:

答案 0 :(得分:7)

您通常可以互换使用这两者,但您需要认识到这些差异。例如,multiprocessing.Event由命名信号量支持,该信号量对应用程序下的平台敏感。

Multiprocessing.Lock由Multiprocessing.SemLock支持 - 所以它需要命名的信号量。从本质上讲,您可以互换使用它们,但使用多处理锁会在应用程序上引入一些平台要求(即,它不能在BSD上运行:))

答案 1 :(得分:1)

我不这么认为。线程锁在同一进程中,而多处理锁可能在共享内存中。

上次我检查过,多处理不允许你在队列中共享锁,这是一个线程锁。

答案 2 :(得分:1)

是的,您可以在单进程应用程序中正常使用多处理模块中的锁,但如果您正在使用多处理,则应使用其锁。