python - 在 Python(还有 MySQL)中使用 C/C++ 进行繁重的计算

标签 python c++ mysql c

我正在我的 Python 网络应用程序中实现一种算法,它包括进行一些(可能)大型聚类和矩阵计算。我已经看到 Python 可以使用 C/C++ 库,并认为利用它来加快速度可能是个好主意。

首先:是否有任何理由不这样做,或者在这样做时我应该记住什么?

其次:我不太愿意将 C 连接到 MySQL(我会在其中获取计算数据)。这在任何方面都是合理的吗?

最佳答案

使用生态系统。

对于矩阵,使用 numpy 和 scipy 可以提供与 Matlab 等工具大致相同的功能范围。如果您学习使用这些模块编写惯用代码,则内部循环可以在模块的 C 或 FORTRAN 实现中进行,从而在大多数任务中获得类似 C 的整体性能和 Python 的表现力。您可能还对 numexpr 感兴趣,它可以进一步加速并在某些情况下并行化 numpy/scipy 表达式。

如果您必须用 Python 编写计算密集型内部循环,请先认真考虑一下。也许您可以以更适合 numpy/scipy 的方式重新表述问题。或者,也许您可​​以使用 Python 中可用的数据结构来提出更好的算法,而不是更快地实现相同的算法。如果没有,还有 Cython,它使用 Python 的一个受限子集来编译为机器代码。

只有作为最后的手段,并且在分析确定绝对最严重的瓶颈之后,您才应该考虑用 C/C++ 编写扩展模块。有很多更简单的方法可以满足绝大多数性能要求,而数字/数学代码是一个拥有非常好的现有库支持的领域。

关于python - 在 Python(还有 MySQL)中使用 C/C++ 进行繁重的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23491608/

相关文章:

Python和DynamoDB十进制。不精确

python - 对 findall() 列表进行切片以获取值

python - "Correct"与 numpy 对象交互的方式

mysql - 将 2 个月份和年份的列与不同的条件相结合

mysql - 获取每个月的最后一条记录 - mysql

python - 无法在 mysql 中使用数据库(访问被拒绝)

c++ - 无法从 char 三重指针获取或打印 wstring 元素

c++ - 结构的互锁交换

c++ - 拷贝构造函数在C++中有返回值吗

php - 使用 codeigniter 同时插入和更新