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

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

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

最佳答案

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

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

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

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

关于python - python中的导入是否被认为是动态链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40492518/

相关文章:

python - 不使用 str 方法从类中检索数据

python - pyTelegramBotAPI 禁用链接预览

python - 狮身人面像 : Link to a method of a class in another module in Python docstring

python - 机器学习: combining features into single feature

python - django动态url的奇怪行为

python - 迭代类中的列表

python - 引用变量

python - 将 DataFrames 与 Pks 的所有组合合并

python - 下载 textblob 证书时出错 验证失败

python - 有没有办法从类范围引用对象的基类 __class__ ?