>>> import multiprocessing
>>> multiprocessing.Manager().Lock()
<thread.lock object at 0x7f64f7736290>
>>> type(multiprocessing.Lock())
<class 'multiprocessing.synchronize.Lock'>
为什么管理器生成的对象是一个
thread.lock
而不是从 multiprocessing
对象期望的 multiprocessing.synchronize.Lock
呢?
multiprocessing.Lock
和threading.Lock
之间可能存在重大差异。我猜你通常会使用multiprocessing.Lock()
,除非你绝对需要一个threading.Lock()
对象,在这种情况下,管理器会确保它在进程间同步。 - Martijn Pietersmultiprocessing.Lock
对象?你不需要管理该对象,它已经是多进程感知的。 - Martijn Pieters