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

Mat*_*yce 5 python dynamic-linking python-import python-2.7 python-3.x

用posix和通用技术软件开发的说法.是否一个import纯粹蟒(未用Cython或c编译库)模块构成一个动态链接?

Mar*_*ers 7

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

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

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

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