python中的导入是否被认为是动态链接?

时间:2016-11-08 17:01:53

标签: python python-2.7 python-3.x python-import dynamic-linking

用posix和通用技术软件开发的说法。 import纯粹的python(不是cython或c编译库)模块是否构成动态链接?

1 个答案:

答案 0 :(得分:5)

不,加载纯Python模块不被视为动态链接的一种形式。

传统的动态链接将机器代码加载到新的内存块中,并且可以为多个可执行进程提供访问权限(动态链接库只需要一次加载,虚拟内存负责其余部分)。链接器在运行时连接可执行文件和动态库。

另一方面,加载Python模块会将模块的字节码加载到Python进程本身(如果此时没有字节码缓存可用,Python将编译源代码)。加载的模块在进程之间不共享。不需要进行转换,运行字节码的结果会在Python堆中生成新的对象,解释器中的所有现有代码都可以与之交互。

在此过程中没有链接器,没有单独的内存,操作系统没有单独的内存部分需要管理,因为模块只是Python进程内存的一部分。