Python 加速策略 - Numba

Python 加速策略 - Numba,第1张

用Numba 对 Python 加速

文章目录
  • 用Numba 对 Python 加速
  • numba - @jit修饰器


numba - @jit修饰器

Python好上手,但是慢起来也是真的慢。最近在找办法加速Python中一个多层for循环,因为数据结构的原因一直感觉无解——直到发现了Numba的@jit这个东西。
怎么用?直接在函数名上加@jit就行(当然这可能是最初级的用法,还没有非常深入地学习)

但是numba对一些数据结构不太支持,可能需要对数据预处理一下。可查阅:
Numba Documentation
Supported Python features in CUDA Python

附Example (数据量越大越明显) :

import time
from numba import *
import numpy as np

@jit
def h(ss):
    f = 0
    q = 0
    for a in range(ss):
        for b in range(126):
            for c in range(20):
                for d in range(36):
                    for e in range(10):
                        for f in range(7):
                            for g in range(2):
                                f += 99.87
                        q += f**2
    return q


start = time.time()
i = h(8)
print('time = ', time.time() -start)

加上@jit前

time =  12.544034481048584

加上@jit后

time =  0.3435640335083008

数据量扩大100倍之后:

加上@jit前

time =  347.4983913898468

加上@jit后

time =  0.6444885730743408

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/869649.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存