之前笔者写过一个pypy的加速方法,可以参阅笔者之前的文章:http://blog.csdn.net/qtlyx/article/details/78078636
但是这一方法中,我们有一个很不现实的要求,就是所有的python代码都要求是python build-in的库来写。今天,我们使用另外一种jit加速的方法,虽然本质上是一样的,但是其实更加好用,因为支持使用别的库,只要我们把计算瓶颈部分改成使用python的build-in函数来进行计算,毕竟,二八原则,百分之二十的代码支配着百分之八十的速度。
不说了,我们来看一下:
#-*-coding:utf-8-*-
import time
import pandas as pd
def time_com(i):
cum = 0
for test in range(i):
for ind in range(i):
cum += (test * ind) % 3
if __name__ == '__main__':
t1 = time.clock()
df = pd.DataFrame()
for i in range(500):
time_com(i)
t2 = time.clock()
print "run time:%f s" % (t2 - t1)
控制台上输出的结果是:
run time:7.714948 s
接下来,我们只加入两行代码,分是是引入numba包,一个是用装饰器修饰我们的计算函数:
#-*-coding:utf-8-*-
import time
import pandas as pd
from numba import jit
@jit
def time_com(i):
cum = 0
for test in range(i):
for ind in range(i):
cum += (test * ind) % 3
if __name__ == '__main__':
t1 = time.clock()
df = pd.DataFrame()
for i in range(500):
time_com(i)
t2 = time.clock()
print "run time:%f s" % (t2 - t1)
我们来看一下结果;
run time:0.190903 s
不说了,勇敢的去加速吧,笔者还特地是用来pandas,然而还是可以加速。但是,要注意的是,在jit装饰器装饰的函数中,不可以有第三方的package哦。