>>> import multiprocessing
>>> print multiprocessing.Manager().Lock()
<thread.lock object at 0x7f64f7736290>
>>> type(multiprocessing.Lock())
<class 'multiprocessing.synchronize.Lock'>
为什么生成的对象是thread.lock
而不是multiprocessing.synchronize.Lock
,因为它可能来自multiprocessing
对象?
答案 0 :(得分:2)
托管对象始终是代理;管理器的目标是使非多处理感知对象能够识别多处理。
对threading.Lock
个对象执行此操作毫无意义;这些是使用semaphores实现的,并且在没有帮助的情况下完全支持多处理。
threading.Lock()
不能识别多处理; multiprocessing.Lock()
个对象与babel-node
之间存在一些差异;例如,后者在获取锁时支持超时。
答案 1 :(得分:0)
肯定不是预期,因为documentation明确指出Lock()
创建一个共享的
threading.Lock
对象并为其返回一个代理。
至于为什么它返回一个threading.Lock而不是一个多处理对象是一个不同的故事我很遗憾无法回答。