【问题标题】:Is code interpreted at every call in Web2Py?每次调用 Web2Py 时都会解释代码吗?
【发布时间】:2011-04-08 15:43:24
【问题描述】:

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

【问题讨论】:

    标签: python performance caching bytecode web2py


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      无论如何,Python 解释器通常会在第一次读取代码时创建一个字节码文件.pyc。这可以在网络服务器环境中工作,就像在其他任何地方一样。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-14
        • 1970-01-01
        • 2011-11-23
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 2019-08-07
        相关资源
        最近更新 更多