python 中的导入是否被视为动态链接?
Is an import in python considered to be dynamic linking?
用posix和一般技术软件开发的说法。纯 python(不是 cython 或 c 编译库)模块的 import
是否构成动态链接?
不,加载纯Python模块不被视为动态链接的一种形式。
传统的动态链接将机器代码加载到新的内存块中,并且可以为多个可执行进程提供访问权限(动态链接库只需要加载一次,虚拟内存负责其余部分)。链接器在运行时连接可执行文件和动态库。
加载Python模块,另一方面,将模块的字节码加载到Python进程本身(如果没有字节码缓存,Python将编译源代码此时也可用)。加载的模块在进程之间不共享。无需进行任何转换,运行 字节码的结果会在 Python 堆中生成新对象,解释器中的所有现有代码都可以与之交互。
此过程中不涉及链接器,没有单独的内存,OS 没有单独的内存部分需要管理,因为模块只是 Python 进程内存的一部分。
用posix和一般技术软件开发的说法。纯 python(不是 cython 或 c 编译库)模块的 import
是否构成动态链接?
不,加载纯Python模块不被视为动态链接的一种形式。
传统的动态链接将机器代码加载到新的内存块中,并且可以为多个可执行进程提供访问权限(动态链接库只需要加载一次,虚拟内存负责其余部分)。链接器在运行时连接可执行文件和动态库。
加载Python模块,另一方面,将模块的字节码加载到Python进程本身(如果没有字节码缓存,Python将编译源代码此时也可用)。加载的模块在进程之间不共享。无需进行任何转换,运行 字节码的结果会在 Python 堆中生成新对象,解释器中的所有现有代码都可以与之交互。
此过程中不涉及链接器,没有单独的内存,OS 没有单独的内存部分需要管理,因为模块只是 Python 进程内存的一部分。