1 回答
TA贡献1719条经验 获得超6个赞
第一个问题是 nopython 模式下的 numba 仅接受(从版本 0.43.1 开始)np.random.seed:仅使用整数参数。
因此,很遗憾,您无法通过None.
第二个问题是(据我所知)没有告诉 numba 如何处理缺失值的“单一”签名,但是您可以使用两个签名(是的,它非常冗长):
import numba as nb
import numpy as np
jitkw = {"nopython": True, "nogil": True, "error_model": "numpy", "fastmath": True}
@nb.jit(
[nb.types.float64(nb.types.misc.Omitted(None)),
nb.types.float64(nb.types.int64)],
**jitkw)
def get_random(seed=None):
return np.random.normal()
只是关于签名的两个部分的简短说明:
如果省略参数,则告诉 numba 用作默认nb.types.float64(nb.types.misc.Omitted(None))类型None
是 nb.types.float64(nb.types.int64)需要整数的签名。
就我个人而言,我不会指定签名,只是让 numba 弄清楚。显式签名在 numba 中很少值得,而且更常见的是,它们会导致代码变慢且不灵活。
添加回答
举报
