Python Numba 0.35.0:使用NumPy out参数
我正在做一些测试,以更好地了解Numba如何与NumPy一起工作,这里我试图看看Numba是否能够处理参数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
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方法对其计时时,需要小心