在运行脚本之前是否可以使用numba编译代码?

时间:2017-12-01 16:12:43

标签: python compilation jit numba

我试图通过使用numba模块来加速我的脚本。但是每次运行我的脚本时,numba都会编译我的一些类(我使用@jitclass)。我想知道是否有可能编译我的类,我知道它们不会改变,以避免每次运行我的脚本时由于编译而造成一些时间损失。我在十几个课程中使用numba,大约需要1分钟。

我已经考虑过使用numba提前编译代码,但我认为我不太了解它。 link 但是,当我使用jitclass时,我不能使用它。

1 个答案:

答案 0 :(得分:2)

据我所知(当前发布的numba:0.36),您无法使用jitclass进行提前编译(AOT)。

从您的问题中不清楚您的代码花费了多少编译时间。一分钟似乎极端,但我通常一次只使用一些jitclasses。我已经在许多模块中使用了许多相互依赖的函数,并且从未见过编译时间超过几秒钟。

如果您可以比较第一次执行代码与后续执行代码所花费的时间,那么假设运行时具有确定性,那应该是编译时间。

如果实时编译的启动成本不实用,那么最佳选择可能是使用Cython来编写C-extensions。缺点是您无法在nopython模式下使用numba代码来使用它们。有许多更好的组织数据结构的方法可能会有所帮助,但是如果没有看到代码就很难说清楚。