1. python 优化速度-更换编译器
2021-03-06 05:30
标签:根据 == *args pytho 官方 def for **kwargs 参数 今天在知乎上发现了一个很神奇的包numba,可以用jit的方式大幅提高计算型python代码的效率,一起来看一下 注意:numba仅支持python3.5以上的版本 numba的使用也很简单,使用numba.jit装饰锂电函数就可以了 以下是一个简单的demo 根据官方文档:numba会读取python字节码,结合函数的参数信息,分析和优化代码,然后使用LLVM编译器生成与机器匹配的机器码,之后每次调用函数时直接使用机器码就行了(其实就是JIT技术,与PyPy类似) 1. python 优化速度-更换编译器 标签:根据 == *args pytho 官方 def for **kwargs 参数 原文地址:https://www.cnblogs.com/ludada/p/14307402.htmlnumba初体验
安装
pip3 install numba
使用
import time
import numba
from functools import wraps
def timeit(f):
@wraps(f)
def wrapper(*args, **kwargs):
enter_time = time.time()
ret = f(*args, **kwargs)
print("{}:{}".format(f.__name__, time.time()-enter_time))
return ret
return wrapper
@timeit
def fib(n):
f1 = f2 = 1
for i in range(1, n):
f1, f2 = f2, f1 + f2
return f2
@timeit
@numba.jit
def fib_with_jit(n):
f1 = f2 = 1
for i in range(1, n):
f1, f2 = f2, f1 + f2
return f2
if __name__ == ‘__main__‘:
fib_with_jit(2000000) # fib_with_jit:0.11314105987548828
fib(2000000) # fib:50.43636465072632
为什么这么快?
可以看到,使用numba装饰的函数快了大概上百倍。测试过程中还发现,当n比较小时,fib执行的时间比fib_with_jit短很多,但当n逐渐增大时,fib执行时间缓慢增长,而fib_with_jit几乎不变
文章标题:1. python 优化速度-更换编译器
文章链接:http://soscw.com/index.php/essay/60726.html