重新给自己分配一个名字

注意标准库的multiprocessing包中的这些行 :

 dict = dict list = list 

__builtins__已有的一些名称重新绑定到模块范围中有什么意义? 它试图达到什么目的? 我在git blame中search了一个解释,但是这个提交很大,没有相关的评论。

这段代码出现在multiprocessing.dummy ,这是一个multiprocessing线程的“假”版本,实现了线程的function。 如果你看下几行,你会看到

 def Manager(): return sys.modules[__name__] 

multiprocessing.dummy Manager作为函数返回multiprocessing.dummy模块本身,因此multiprocessing.dummy模块对象必须提供多处理Manager对象的API。 线

 dict = dict list = list 

在那里,所以你可以做

 m = multiprocessing.dummy.Manager() d = m.dict() 

就好像你有一个真正的multiprocessing.Manager()