是否在Web2Py的每个调用中解释代码?

时间:2010-09-06 06:59:58

标签: python performance caching bytecode web2py

如果是这样,有什么好处? (确保它会避免重启webserver)。但这不是一个性能瓶颈吗?对于生产,是否可以直接从字节码跳过解释阶段(缓存)运行web2py(第一个请求除外)?

2 个答案:

答案 0 :(得分:5)

在web2py中,默认情况下,每次请求都会解释模型,视图和控制器中的所有代码(不是web2py代码,而不是模型,视图,控制器导入的模块中的代码)。这允许使用第三方Web服务器(例如apache),并且仍然能够在不重新启动的情况下立即看到代码中的更改。 PHP的工作方式相同。性能损失可以忽略不计,因为解析代码的时间少于执行代码的时间。

无论如何,在管理界面中有一个“编译”按钮,它将字节码编译代码并将视图层次结构(扩展和包含的视图)折叠为每个操作的单个文件,并消除性能损失。它还允许您分发编译的代码字节码,而不会泄露源代码。许可证允许它。

答案 1 :(得分:2)

我特别不了解web2py,但它像大多数其他Python框架一样通过WSGI运行。这意味着代码仅在进程启动时进行解释,否则将保留在内存中。进程由Web服务器本身动态启动和终止,但通常持续多个请求。

在任何情况下,Python解释器通常在首次读取代码时创建一个字节码文件.pyc。这在网络服务器环境中就像在其他任何地方一样。

然而,最后,通常认为代码解析不是特别的瓶颈 - 转换为字节码非常快。在Web应用程序中,您的瓶颈几乎肯定在其他地方(可能与数据库连接)。