注意multiprocessing
标准库包中的these lines:
dict = dict
list = list
将__builtins__
上已有的某些名称重新绑定到模块范围的重点是什么?它想要实现什么?我在git责备中搜索了一个解释,但这个提交很大,没有相关的评论。
答案 0 :(得分:50)
此代码出现在multiprocessing.dummy
,"假"使用线程实现功能的multiprocessing
版本。如果你往下看几行,你就会看到
def Manager():
return sys.modules[__name__]
multiprocessing.dummy
将Manager
实现为仅返回multiprocessing.dummy
模块本身的函数,因此multiprocessing.dummy
模块对象必须提供多处理管理器对象的API。行
dict = dict
list = list
将内置命名空间中dict
和list
名称的绑定复制到模块的命名空间中,这样就可以了
m = multiprocessing.dummy.Manager()
d = m.dict()
好像你有一个真实的multiprocessing.Manager()
。