从核心库的角度比较php与python

从核心库的角度比较php与python,php,python,python-2.7,shared-libraries,Php,Python,Python 2.7,Shared Libraries,这不是一个语言比较问题,就像在各种论坛上问的那样。我很想知道python中更具体的术语核心库/模块调用/执行 我检查了python模块的安装目录,比如/usr/lib/python2.7(在Ubuntu上)。我找到了.py(源代码)和.pyc(字节代码)。当我们使用import语句或更具体地从该模块中调用class/function时,我假设Python解释器/编译器调用.pyc文件 当php使用.so(共享对象)文件作为库时。正如我在/usr/lib/php5/20090626上看到的那样。是

这不是一个语言比较问题,就像在各种论坛上问的那样。我很想知道python中更具体的术语核心库/模块调用/执行

我检查了python模块的安装目录,比如/usr/lib/python2.7(在Ubuntu上)。我找到了.py(源代码)和.pyc(字节代码)。当我们使用import语句或更具体地从该模块中调用class/function时,我假设Python解释器/编译器调用.pyc文件

当php使用.so(共享对象)文件作为库时。正如我在/usr/lib/php5/20090626上看到的那样。是的,python还有一个目录/usr/lib/pyshared/python2.7用于.so文件。但是仍然有很多重要的库存储为.pyc文件


仅使用.so扩展像php这样的核心库以提高性能不是一个好主意吗

.py文件是动态编译成.pyc文件的,如果.pyc文件比.py文件更新,则使用.pyc文件。

有些模块可以用C/C++编写,然后作为.so文件交付。

我知道pyc文件。我的观点是,即使对于很多核心模块,python仍然在读取字节码。对于第三方模块/应用程序,这是可以理解的,但对于核心模块,如果使用,会出现什么问题。因此编译版本。@kuldeep.kamboj CPython是一个解释器。它不生成本机代码。所以文件是本地代码;Python附带的代码是用C@JanneKarila编写的,位于/usr/lib/python2.7/目录下,我找到了popen2.pyc、socket.pyc、urllib2.pyc等等。如果它们不是python默认安装附带的核心库。我的问题是,同样的cpython可以为用户的应用程序生成pyc,这是可以理解的,但对于popen、urllib2等核心模块,套接字本机编译版本可以通过python默认安装分发。在php中,我们甚至没有类似于pyc的字节编译文件,因此php intepreter读取/解析php文件。但是对于核心库,没有.php或字节编译版本,但是使用了.so版本。@kuldeep.kamboj您实际上是在问为什么没有更多的标准库模块是用C编写的。这是一个可以讨论的话题,但堆栈溢出并不是真正的问题。但是,请注意,例如,
socket
仅部分用Python编写。您应该能够在系统的某个地方找到一个
\u套接字。因此,
文件。@Janne Karila。据我所知,问题是我们为什么不把python标准库编译成本机代码,这样我们就不用运行字节码,而是运行本机代码。答案是因为没有办法将python代码编译为本机代码,请看我在想python是否喜欢像JAVA世界一样,在JAVA世界中jvm读取.class/.jar文件而不是编译版本,但我不确定JAVA的核心模块是否不是本机编译的。