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

Is it wise to use Numba and Cython togther?

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

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

我一直在研究 numba 和 cython 以尽可能加快我的程序,但它们似乎擅长不同的事情。

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

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

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

但是我从来没有听说过有人一起使用它们。

我正在考虑在方便有用的时候使用 Numba,在其他地方使用 Cython。

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

I'm thinking of using Numba when it's convenient and useful and Cython elsewhere.

我认为您会发现:

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

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

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