7

模块中的锁可以与threading模块中的锁互换multiprocessing吗?

4

3 回答 3

8

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

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

于 2009-04-11T14:34:57.120 回答
1

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

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

于 2009-04-11T07:42:18.483 回答
1

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

于 2009-04-11T07:48:01.497 回答