我想编写一个函数,该函数既可以作为jitted函数运行,也可以作为普通python或对象模式numba运行,具体取决于numba
是否能够进行类型推断。实际上,我更喜欢普通的python,但是似乎没有一种方法可以写出自己的装饰器。
我为什么要这样做?因为我有一个函数f
,需要另一个函数g
作为参数。因此,如果g
是jitted的,那么我希望f
被jitted的以便整个程序可以快速运行,但是如果g
是普通的python,那么我希望f
可以仍然运行,尽管速度较慢。
用f
注释@jit
可以很好地工作,除了我第一次在对象模式下运行该函数时,会收到有关类型推断失败的编译警告。我想抑制此警告。
This answer说要使用@autojit(warn=False)
,但不再有autojit
。它还说@jit(warn=False)
可以用,但是也不能用,我得到:
KeyError: "<class 'numba.core.cpu.CPUTargetOptions'> does not support option: 'warn'"
必须有一种在没有警告的情况下完成此操作的方法,但是我似乎无法用谷歌搜索它。感谢您的帮助。