一起使用 Numba 和 Cython 是否明智?

hel*_*345 2 cython python-3.x numba

我正在开发一个程序,该程序依赖于尽快迭代数百万个数据点。

我打算将此程序转换为独立的 exe,以便于使用和分发。

我一直在研究 numba 和 cython 作为尽可能加速我的程序的方法,但它们似乎都擅长不同的事情。

Numba 的局限性更大,但非常擅长迭代 numpy 数组,并且无需太多思考即可轻松实现。

平均而言,它似乎也比 Cython 更快,尤其是当数据集很大时。至少从我读到的来看。

Cython 比 numba 更难实现,但它是通用的,并且在大多数情况下几乎或同样快。

但我从未听说过有人将它们一起使用。

我正在考虑在方便且有用的情况下使用 Numba,而在其他地方则使用 Cython。

这是一个坏主意吗?我错过了什么吗?

Dav*_*idW 5

我正在考虑在方便且有用的情况下使用 Numba,而在其他地方则使用 Cython。

我想你会发现的是:

  1. 如果您需要从 Numba 调用 Cython 函数,@ead 已经编写了一个非常全面的答案,详细说明了限制。基本上,它不能def很好地看到 Cython 函数的内部,但是有一些方法可以传递cdefcpdef函数给它。

  2. 您无法在 Cython 代码中定义Numba 函数。这是因为 Numba 查看函数的字节码,而 Cython 编译的函数没有字节码。

有了这两个警告,我认为它们可以共存,因此根据任务进行挑选并没有真正的问题。