在 python 中嵌入 c++ 代码会使你的 python 应用程序更快吗? [关闭]

Posted

技术标签:

【中文标题】在 python 中嵌入 c++ 代码会使你的 python 应用程序更快吗? [关闭]【英文标题】:Does embedding c++ code in python make your python application faster? [closed] 【发布时间】:2013-03-10 17:48:21 【问题描述】:

使用 ctypes、boost.python 等在 python 中嵌入 c++ 代码是否会使您的 python 应用程序更快?

假设我在 pygtk 中创建一个应用程序,我需要一些需要快速的功能。因此,如果我在我的应用程序中使用 c++ 来完成某些任务,它会有用吗?

还有哪些其他选项可以让 python 代码更快?

【问题讨论】:

C++ 并不是让一切变得更快的神奇工具。您可以轻松编写运行速度比执行相同操作的 python 代码慢的 C++ 代码。它总是取决于你的情况和你的 C++ 技能,所以唯一真正的方法就是去做。 视情况而定。您可以通过将某些代码替换为 C++ 来加快速度,但不能保证。 感谢您的回复!!是的,一切都取决于个人的编程技能。我只是想知道在你的应用程序中嵌入 c++ 函数是否可以让你的程序更快。 例如,对于具有许多循环迭代的短数字代码,C++ 通常会更快。对于繁重的输入/输出(文件、网络),通常不值得。 @RushabhRajeshKumarPadalia:C++ 的 CPU/内存效率比 Python 更高...因此,如果您受 I/O 限制(磁盘/数据库),它不会有太大帮助,而如果您执行很多计算,如果你做对了,它可能会。请注意,许多特定的 Python 库已经作为 C 库之上的瘦包装器存在,以执行繁重的工作。 【参考方案1】:

用 C++ 重写代码的性能关键部分可能是一种选择。要有效地做到这一点,您首先需要了解瓶颈在哪里。最好的方法可能是先用纯 Python 编写所有内容,然后再进行配置。

另一种选择可能是使用PyPy

最后,如果你发现瓶颈是数值计算,那么NumPy 值得一看。

值得注意的是,例如,如果您的代码是 I/O 绑定的,那么上述选项都不会有太大帮助。

【讨论】:

感谢 NPE,现在我明白了。 NumPy 是我可以进一步探索的东西。【参考方案2】:

这取决于,没有明确的答案。如果你用 C++ 编写糟糕的代码,它可能比编写好的 Python 代码还要慢。

假设您可以编写高质量的 C++ 代码,您可以预期性能关键部分的加速最高可达 20 倍。

正如另一个答案所说,NumPy 是解决数值瓶颈的好选择(如果您考虑矩阵运算而不是循环!); SciPy 带有 weaver,它允许您嵌入内联 C++ 和其他好东西。

【讨论】:

是的,我一直在寻找 NumPy!

以上是关于在 python 中嵌入 c++ 代码会使你的 python 应用程序更快吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

采用现代Objective-C

java方法的参数 为啥有时会加上final关键字

如何在未安装 python 的系统上嵌入 python 代码来执行 C++ 代码

无法在嵌入 C++ 的 Python 代码中修改 time.time() 返回的值

将 python + numpy 代码嵌入到 C++ dll 回调中

在 C++ 中嵌入 python:奇怪的分段错误