知行编程网知行编程网  2023-01-01 19:30 知行编程网 隐藏边栏  11 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于如何提升python运行速度的相关知识,包括python运行慢的原因,以及oppo手机运行速度这些编程知识,希望对大家有参考作用。

如何提高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中调用机器码的wrapper对象。为了能够

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

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

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

浮点数。

推荐学习《
》!

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享