numba.jit 将函数和签名作为输入
numba.jit give function and signature as inputs
我的objective:
我有一个函数,我想看看它对 numba options/parameters(nopython、no gil、parallel 等和 Signature!)列表的执行情况!
所以我想做类似的事情:
def foo(a):
return a*2
for signature in list:
foo_jit = numba.jit(foo, signature)
print("speed for jitted func given signature")
遗憾的是,这会引发错误,因为 @numba.jit() 作为装饰器为第一个输入接受签名,而 numba.jit() 作为函数接受函数作为输入。我试过在 jit 函数之前分配签名,但是你不能 jit 一个函数两次。
为了测试这种方法,我会尝试在循环中定义一个函数:
for signature in list:
@jit(signature)
def foo(a):
return a*2
start = time.time()
foo(whatever_data_you_have)
end = time.time()
print("Elapsed (with compilation) = %s" % (end - start))
你当然可以读到in the guide第一次是编译,因此如果你想要没有编译的时间,再添加一次测试块,它将从缓存中加载并且不会计算经过的编译时间.
我的objective:
我有一个函数,我想看看它对 numba options/parameters(nopython、no gil、parallel 等和 Signature!)列表的执行情况!
所以我想做类似的事情:
def foo(a):
return a*2
for signature in list:
foo_jit = numba.jit(foo, signature)
print("speed for jitted func given signature")
遗憾的是,这会引发错误,因为 @numba.jit() 作为装饰器为第一个输入接受签名,而 numba.jit() 作为函数接受函数作为输入。我试过在 jit 函数之前分配签名,但是你不能 jit 一个函数两次。
为了测试这种方法,我会尝试在循环中定义一个函数:
for signature in list:
@jit(signature)
def foo(a):
return a*2
start = time.time()
foo(whatever_data_you_have)
end = time.time()
print("Elapsed (with compilation) = %s" % (end - start))
你当然可以读到in the guide第一次是编译,因此如果你想要没有编译的时间,再添加一次测试块,它将从缓存中加载并且不会计算经过的编译时间.