最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何提升python运行速度

    正文概述    2020-01-28   483

    如何提升python运行速度

    python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器Cpython运行效率太差。

    “一行代码让python的运行速度提高100倍”这绝不是哗众取宠的论调。

    我们来看一下这个最简单的例子,从1一直累加到1亿。

    最原始的代码:

    import time
    def foo(x,y):
      tt = time.time()
      s = 0
      for i in range(x,y):
        s += i
      print('Time used: {} sec'.format(time.time()-tt))
      return s
    print(foo(1,100000000))

    结果

    Time used: 6.779874801635742 sec
    4999999950000000

    是不是快了100多倍呢?

    那么下面就分享一下“为啥numba库的jit模块那么牛掰?”

    NumPy的创始人Travis Oliphant在离开Enthought之后,创建了CONTINUUM,致力于将Python大数据处理方面的应用。最近推出的Numba项目能够将处理NumPy数组的Python函数JIT编译为机器码执行,从而上百倍的提高程序的运算速度。

    Numba项目的主页上有Linux下的详细安装步骤。编译LLVM需要花一些时间。

    Windows用户可以从Unofficial Windows Binaries for Python Extension Packages下载安装LLVMPy、meta和numba等几个扩展库。

    下面我们看一个例子:

    import numba as nb
    from numba import jit
    @jit('f8(f8[:])')
    def sum1d(array):
     s = 0.0
     n = array.shape[0]
     for i in range(n):
      s += array[i]
     return s
    import numpy as np
    array = np.random.random(10000)
    %timeit sum1d(array)
    %timeit np.sum(array)
    %timeit sum(array)
    10000 loops, best of 3: 38.9 us per loop
    10000 loops, best of 3: 32.3 us per loop
    100 loops, best of 3: 12.4 ms per loop

    numba中提供了一些修饰器,它们可以将其修饰的函数JIT编译成机器码函数,并返回一个可在Python中调用机器码的包装对象。为了能

    将Python函数编译成能高速执行的机器码,我们需要告诉JIT编译器函数的各个参数和返回值的类型。我们可以通过多种方式指定类型信

    息,在上面的例子中,类型信息由一个字符串'f8(f8[:])'指定。其中'f8'表示8个字节双精度浮点数,括号前面的'f8'表示返回值类型,括号

    里的表示参数类型,'[:]'表示一维数组。因此整个类型字符串表示sum1d()是一个参数为双精度浮点数的一维数组,返回值是一个双精度

    浮点数。

    推荐学习《Python教程》!


    起源地下载网 » 如何提升python运行速度

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元