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

Is it possible to compile a code with numba before runing a script?

我正在尝试使用 numba 模块来加速我的脚本。然而每次我 运行 我的脚本,numba 编译我的一些 类(我使用 @jitclass)。我想知道是否可以编译我的 类,我知道它们不会更改,以避免每次我 运行 我的脚本时由于编译而浪费一些时间。我在一打 类 上使用 numba,大约需要 1 分钟。

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

据我所知(numba 的当前版本:0.36),您不能将 jitclass 用于提前编译 (AOT)。

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

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

如果即时编译的启动成本不切实际,您最好的选择可能是使用 Cython 编写 C-extensions。缺点是您将无法在 nopython 模式下从 numba 代码使用它们。有许多更好的组织数据结构的方法可能会有所帮助,但如果不看代码就很难判断。