大多数标准库都是用Python .py文件编写的,但是有些标准库是在Unix上的.so文件和Windows上的.pyd。例如,os是用os.py编写的,而pyexpat是用pyexpat.cpython-36m-darwin.so编写的。这些.so库有什么特别之处?
答案 0 :(得分:4)
controller2
文件是共享库文件,它们是已编译的共享库。它们通常以.so
,C
,C++
等编译语言编写。
Python是一种解释型语言,用它编写的代码往往很慢,因为解释器需要遍历正在执行的代码的每一行,将其翻译成某种中间字节代码,然后最终执行该字节代码。这可能很慢。
在考虑性能的情况下,模块以较低级别的语言(例如Go
)编写,然后编译为共享对象文件。这些文件可以由Python解释器加载,并像普通的python模块一样使用。由于这些模块已经被编译为机器代码,因此可以直接执行而无需通过解释器,因此它们比用Python编写的等效代码快得多。
使用诸如C
之类的较低级语言编写,还可以有效利用内存,甚至释放全局解释器锁,以利用多核并行处理技术。 C
,numpy
之类的科学模块就是这些示例。