Python Numba 0.35.0:使用NumPy out参数

Python Numba 0.35.0:使用NumPy out参数,python,numpy,numba,Python,Numpy,Numba,我正在做一些测试,以更好地了解Numba如何与NumPy一起工作,这里我试图看看Numba是否能够处理参数 import numpy as np from numba import njit , jit from time import time @njit def mult(a,b, N = 1000000): c = np.zeros_like(a) for i in range(N): np.multiply(a, b, out=c) retu

我正在做一些测试,以更好地了解Numba如何与NumPy一起工作,这里我试图看看Numba是否能够处理参数

import numpy as np 
from numba import njit , jit
from time import time 

@njit
def mult(a,b, N = 1000000):
    c = np.zeros_like(a)
    for i in range(N):
        np.multiply(a, b, out=c)
    return c

d = np.asarray([1,2,3,4,5,6,7,8,9])
e = np.asarray([1,2,3,4,5,6,7,8,9])

t = time()
e = mult(d,e)

print "Time Elapsed :" + str(time() - t)
不使用Numba,代码运行良好。它甚至比在我的配置中使用
@jit
装饰:~1.2s和~1.6s更快

使用
@njit
会导致该错误:

LoweringError:调用函数()时不支持关键字参数

但是,他们说支持out参数。对此我能做些什么

只是nopython模式下的numba不支持关键字参数。如果将其作为位置参数传递,则该选项有效:

@njit
def mult(a,b, N = 1000000):
    c = np.zeros_like(a)
    for i in range(N):
        np.multiply(a, b, c)
    return c
然而,使用总是做同样事情的循环对numba来说可能是一个问题,因为有时候numba编译器会注意到结果在循环之间不会改变,并且它会完全优化循环-本质上导致错误的计时。然而,在本例中,我不认为会发生这种情况,但在使用像numba这样的激进编译器并根据“幼稚的”Python方法对其计时时,需要小心