在网上的python,它编译成字节码还是更像是php?

时间:2010-06-07 14:22:25

标签: python fastcgi

python是否编译成一些字节代码,或者每次都像php / asp那样动态呈现?

从我的阅读中我读到它有自己的字节码格式,所以我认为它就像java / .net,它编译成中间语言/字节码。

所以在这方面更有效的是,对吗?

5 个答案:

答案 0 :(得分:1)

鉴于语言X,以及服务器可以了解它的方式(模块或其他)或适当的“中间”CGI程序mX,可以对此mX进行编程,以便它确实直接解释X中的纯文本脚本(如php),或字节码编译代码(最初用X编写)。因此,如果存在适当的mX,它可以是两种选择。但我认为最常见的一个与php和asp相同。

处理字节码比解释脚本更有效(即使现代解释器没有以简单的方式实现并使用“技巧”来提高性能)

答案 1 :(得分:1)

您可以轻松查看字节码:

>>> import dis
>>> dis.dis(lambda x: x*2)
  1           0 LOAD_FAST                0 (x)
              3 LOAD_CONST               0 (2)
              6 BINARY_MULTIPLY     
              7 RETURN_VALUE        
>>> 

答案 2 :(得分:0)

您可以将python编译为PYC(http://effbot.org/zone/python-compile.htm)。但是,只是执行一个python脚本不会自动编译,因此使用python的CGI Web设置不会自动编译。

答案 3 :(得分:0)

当你在Python中使用一个模块时,它(通常)会被编译(如果它还没有)。例如,如果您只使用.py文件部署了Django应用程序,那么当应用程序导入模块时,它们将被编译(并输出为.pyc个文件)。

答案 4 :(得分:0)

导入时,Python模块会“编译”到.pyc个文件。这与编译Java或.NET不同,剩下的内容与您的源几乎有1-1对应关系;这意味着下次不必解析文件,但这就是全部。

您可以使用compilecompileall模块预编译一组脚本,或编译一个原本无法编译的脚本。我不认为从命令行(或从CGI)运行脚本会使用.pyc