python - 是否值得用 cython 重写我的代码?

标签 python numpy scipy cython

我有一个使用 numpy 和 scipy 的 python 程序。 在其中添加 cython 将是一个需要时间的过程,因为数据类型有很多变化

它的cprofile是这样的: http://imgur.com/a/Sgvof

大部分时间 (73%) 都被 <scipy.integrate_odepack.odeint> 用完了 我的问题基本上是,使用 cython 是否可以加快此功能(可能通过更快的调用)和其他功能。 在此示例中,此函数被调用了 ~10^6 次。 如果是这样,我可以期望多少速度? 如果加速至少是 4 到 5 倍,我会考虑追求这个

注意:

如果提供的信息不足,请在下方留言,我很乐意提供

谢谢

最佳答案

嗯一半的时间<scipy.integrate_odepack.odeint>正在里面度过dx_dvdx_du这些看起来像是 python 函数。这些是您可以定位的功能,尤其是当它们很复杂时。

要记住的一件事是,如果减速只是因为 calling overhead * number of calls那么我不希望事情有太大改善。这种开销不会消失,事实上它可能会变得更加复杂。您将执行 SciPy C -> Python -> 您的 C,而不是 SciPy C -> Python。

关于python - 是否值得用 cython 重写我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447746/

相关文章:

python - 如何将 blob 文件转换为特定格式?

python - 无法使用割炬创建张量

python - 使用 numpy 检查矩阵的每个部分是否全为 0

python - 如何为k最近邻分类创建置信度估计的颜色图

python - pydot.InvocationException : GraphViz's executables not found

python - Python 和 GtkUnixPrintDialog 示例

python - 如何有效地对 Pandas 中的列和分组进行分类?

python-2.7 - 在大型 numpy 三维数组上计算二维成对距离

python - Theano共享变量更新导致 `ValueError: length not known`

python - 无法让 scipy 层次聚类工作