numba用户手册
numba用户手册
numba用户手册 2019/1/9
--------------------------------------------------------------------------------------------------------------
1.1.用途:装饰器通过Numba的JIT编译器标记要优化的函数.各种调用模式会触发不同的编译选项和行为
1.2.参考:http://numba.pydata.org/numba-doc/latest/user/index.html
1.3.安装:conda install numba
--------------------------------------------------------------------------------------------------------------
2.1.数据类型
nb.types.__all__#查看数据类型
'b1','i1','i2', 'i4','i8','u1','u2','u4','u8','f4','f8','c8','c16','optional','ffi_forced_object','ffi','deferred_type'
'void', 'none';'boolean','bool_'; 'byte','char','uchar',
固定宽度整数:'int_','int8', 'int16', 'int32','int64','uint8','uint16','uint32','uint64'; 'short','ushort','int_','uint','long_','ulong','longlong', 'ulonglong',
整形指针: 'intp', 'uintp'
C整形数: 'intc', 'uintc'#等效于C int,unsigned int
浮点数: 'float32','float64''float_','double','long double'#单精度和双精度浮点数
复数: 'complex64','complex128' #单精度和双精度复数
2.2.数组类型:通过索引任何数字类型来指定 #float32[:] 一维单精度数组;int8[:,:]8位整数二维数组
--------------------------------------------------------------------------------------------------------------
3.Numba装饰器:
@njit- 别名@jit(nopython=True)#引发错误
@vectorize- 产生NumPy ufunc(ufunc支持所有方法)
@guvectorize- 产生NumPy广义ufuncs
@stencil- 将函数声明为模板操作的内核
@jitclass- 针对jit的类
@cfunc- 声明一个用作本机回调的函数(从C / C ++等中调用)
@overload- 注册自己的函数实现以在nopython模式下使用,例如@overload(scipy.special.j0).
装饰器中其他选项:
parallel = True- 启用功能的 自动并行化.
fastmath = True- 为该功能启用快速行为.
ctypes / cffi / cython互操作性:
cffi- 在模式下支持CFFI函数的调用nopython
ctypes- 在模式下支持ctypes包装函数的调用nopython
Cython 导出的函数是可调用的.
--------------------------------------------------------------------------------------------------------------
4.时间测试:
S=’’
print('costtime=',timeit.timeit(s,number=10,globals=globals())/10,' s')#cost time= 2.0249874216 s
--------------------------------------------------------------------------------------------------------------