【问题标题】:Does Python have an inline statement?Python 有内联语句吗?
【发布时间】:2012-09-01 17:25:05
【问题描述】:

python 在 C 中是否有类似于 inline 的东西?

如果没有,如何加快函数的执行速度?

【问题讨论】:

  • Python 是解释型的,所以在某种意义上,一切都是“内联”的。如果您需要帮助加快速度,您需要举一个更具体的示例。
  • 你的意思是 lambda?使用 Cython 什么的?优化是程序功能所独有的......
  • 仅供参考 (1) 内联不一定会提高性能。 (2) inline 对今天的 C 编译器没有任何意义——他们只是忽略它。
  • 您可能应该在优化第一个瓶颈之前仔细测量。

标签: python inline


【解决方案1】:

不,python没有这样的说法。

但是,如果函数调用的开销对您来说是个问题,那么使用 Python 之类的脚本语言是错误的选择。考虑将相关部分移动到 C 扩展中。如果您可以选择,请查看Cython

【讨论】:

    【解决方案2】:

    不,它没有。但是有几种加速 Python 执行的机制,例如,您可以从 Python 程序中调用本机 C 代码,例如使用 Boost.Python

    Boost Python 库是一个用于连接 Python 和 C++ 的框架。它允许您快速、无缝地将 C++ 类函数和对象公开给 Python,反之亦然,无需使用特殊工具 - 只需您的 C++ 编译器。它旨在以非侵入方式包装 C++ 接口,因此您根本不需要更改 C++ 代码来包装它,这使得 Boost.Python 成为向 Python 公开第 3 方库的理想选择。该库使用高级元编程技术为用户简化了语法,因此包装代码看起来像是一种声明性接口定义语言 (IDL)。

    【讨论】:

      【解决方案3】:

      您可以从 scipy 下载一个名为 Weave 的库,它允许您将 c 或 c++ 代码内联到您的 python 代码中。这样会加快速度。

      然而python本身并没有内联函数。

      还有其他旨在加速计算的库,如 scipy、numpy,我认为 matplotlib 是一个非常好的库。还有用于并行计算的 iPython。

      祝你好运。

      【讨论】:

        【解决方案4】:

        我不知道 Python 中有等效的内联功能。

        假设您已经用尽惯用语言功能(例如列表理解等),您可以做的最好的事情是加速函数检查算法。

        【讨论】:

          【解决方案5】:

          Python 会为您优化代码,但您对它的优化方式没有任何影响。为了加快任何 python 代码的加载时间,您可以在执行之前将其编译为字节码。

          【讨论】:

            猜你喜欢
            • 2017-10-28
            • 1970-01-01
            • 2013-06-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-25
            相关资源
            最近更新 更多