是否可以在运行脚本之前使用 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 代码使用它们。有许多更好的组织数据结构的方法可能会有所帮助,但如果不看代码就很难判断。
我正在尝试使用 numba 模块来加速我的脚本。然而每次我 运行 我的脚本,numba
编译我的一些 类(我使用 @jitclass
)。我想知道是否可以编译我的 类,我知道它们不会更改,以避免每次我 运行 我的脚本时由于编译而浪费一些时间。我在一打 类 上使用 numba
,大约需要 1 分钟。
我已经看过使用 numba
提前编译代码,但我认为我不太了解它。 link
但是,当我使用 jitclass
时,我不认为我可以使用它。
据我所知(numba 的当前版本:0.36),您不能将 jitclass
用于提前编译 (AOT)。
从你的问题中不清楚你的代码花费了多少编译时间。一分钟似乎很极端,但我通常一次只使用几个 jitclasses
。我已经使用了数十个分布在许多模块中的相互依赖的函数,并且从未见过编译时间超过几秒钟。
如果您可以比较第一次执行代码与后续执行代码所花费的时间,那应该是假设运行时是确定性的编译时间。
如果即时编译的启动成本不切实际,您最好的选择可能是使用 Cython 编写 C-extensions。缺点是您将无法在 nopython
模式下从 numba 代码使用它们。有许多更好的组织数据结构的方法可能会有所帮助,但如果不看代码就很难判断。