重新为自己分配名称

wim*_*wim 51 python

请注意这些线multiprocessing的标准库的程序包:

dict = dict
list = list
Run Code Online (Sandbox Code Playgroud)

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

use*_*ica 50

这段代码发生在multiprocessing.dummy一个"假"版本中,multiprocessing它实现了线程的功能.如果你向下看几行,你会看到

def Manager():
    return sys.modules[__name__]
Run Code Online (Sandbox Code Playgroud)

multiprocessing.dummy实现Manager为只返回multiprocessing.dummy模块本身的函数,因此multiprocessing.dummy模块对象必须提供多处理管理器对象的API.线条

dict = dict
list = list
Run Code Online (Sandbox Code Playgroud)

将innerins命名空间中的dict和的list名称绑定复制到模块的命名空间中,这样就可以了

m = multiprocessing.dummy.Manager()
d = m.dict()
Run Code Online (Sandbox Code Playgroud)

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

  • @Rob:排序.如果没有找到全局变量,则全局变量查找会回退到内部变量,如右侧所示.但是,全局变量赋值总是分配给(module-)全局变量.因此,此赋值从内置函数中获取`dict`的值,并将其赋值给具有相同名称的模块全局变量. (7认同)
  • 有人不熟悉python; 出于好奇,这是否意味着`dict = dict`的左侧是指与右侧不同的位置/变量? (3认同)