重新为自己分配名称

时间:2017-05-08 17:05:47

标签: python

注意multiprocessing标准库包中的these lines

dict = dict
list = list

__builtins__上已有的某些名称重新绑定到模块范围的重点是什么?它想要实现什么?我在git责备中搜索了一个解释,但这个提交很大,没有相关的评论。

1 个答案:

答案 0 :(得分:50)

此代码出现在multiprocessing.dummy,"假"使用线程实现功能的multiprocessing版本。如果你往下看几行,你就会看到

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

multiprocessing.dummyManager实现为仅返回multiprocessing.dummy模块本身的函数,因此multiprocessing.dummy模块对象必须提供多处理管理器对象的API。行

dict = dict
list = list

将内置命名空间中dictlist名称的绑定复制到模块的命名空间中,这样就可以了

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

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