为什么有些Python标准库是用.so编写的,而大多数其他标准库却是.py编写的?

时间:2018-09-17 10:31:27

标签: python standard-library .so

大多数标准库都是用Python .py文件编写的,但是有些标准库是在Unix上的.so文件和Windows上的.pyd。例如,os是用os.py编写的,而pyexpat是用pyexpat.cpython-36m-darwin.so编写的。这些.so库有什么特别之处?

1 个答案:

答案 0 :(得分:4)

controller2文件是共享库文件,它们是已编译的共享库。它们通常以.soCC++等编译语言编写。

Python是一种解释型语言,用它编写的代码往往很慢,因为解释器需要遍历正在执行的代码的每一行,将其翻译成某种中间字节代码,然后最终执行该字节代码。这可能很慢。

在考虑性能的情况下,模块以较低级别的语言(例如Go)编写,然后编译为共享对象文件。这些文件可以由Python解释器加载,并像普通的python模块一样使用。由于这些模块已经被编译为机器代码,因此可以直接执行而无需通过解释器,因此它们比用Python编写的等效代码快得多。

使用诸如C之类的较低级语言编写,还可以有效利用内存,甚至释放全局解释器锁,以利用多核并行处理技术。 Cnumpy之类的科学模块就是这些示例。