Python优化闲谈

Numba使用心得

在优化Python的过程中,了解到Numba可以对Python原生代码进行CPU和GPU加速。于是体验了一下。

代码:

from numba import jit

@jit
def test(value):
    a = 0
    for i in range(value):
        a += i

def run():
    start = time.time()
    test(10000)
    print("time1:", (time.time()-start))
    # 不使用numba的时间:0.0012049674987792969s
    # 使用numba的时间:1.4513230323791504s

run()

想来想去感觉根本不是那么回事,不是说numba是原生Python的代码几十倍吗?

继续探索把10000改成100000000效果如下:

# 不使用numba的时间:16.057264804840088s
# 使用numba的时间:1.8022119998931885s

发现随着数据增大后,使用numba所消耗的时间并没有明显变长,而这1.8s的时间内应该是编译时间占了大头。

继续探索,改一下代码,还是使用numba:

def run():
    start = time.time()
    test(100000000)
    print("time1:", (time.time()-start))
    start = time.time()
    test(100000001)
    print("time2:", (time.time()-start))

time1: 1.577368974685669
time2: 2.1457672119140625e-06

大吃一惊,time2的速度是真的飞起来了。

好了,我想你应该对numba的实用性方面有个概念了。