首页 >

Numba和Cython如何加速Python代码 – CSS – 前端,python 文件读取 list

python上传图片,python numpy转置,python unset,整数型 Python,能见度检测python,Python compile #,python秃顶,web是python,Python 并发读取,python mongodb ubuntu,python 文件读取 listdiv和css教程,css 的type,css设置北京图片,css网页颜色咋设置,react 引入antd的css,背景图片过滤 css,css3 lodingNumba和Cython如何加速Python代码 - CSS - 前端,python 文件读取 list

Numba 是一个 Python 代码的即时编译工具,对使用 numpy 数组和函数以及有循环的 Python 代码能够取得非常好的加深效果。使用 Numba 加速 Python 代码一般只需简单地在 Python 函数前添加一些装饰器,比如说像下面的例子:

from numba import jitimport numpy as npx = np.arange(100).reshape(10, 10)@jit(nopython=True) # Set “nopython” mode for best performancedef go_fast(a): # Function is compiled to machine code when called the first time trace = 0 for i in range(a.shape[0]): # Numba likes loops trace += np.tanh(a[i, i]) # Numba likes NumPy functions return a + trace # Numba likes NumPy broadcastingprint(go_fast(x))

Cython 你可以认为是一种新的编程语言,其结合了 Python 和 C 两种语言的语法,但是代码更接近 Python 一些。使用 Cython 可以方便地为 Python 编写扩展模块,因此可以以非常类似 Python 的语法达到类似 C 的执行性能。使用 Cython 也比较简单,可以先按照 Python 的语法完成代码,然后在适当的地方添加一些静态类型声明,比如说像下面这样:

def f(double x): return x ** 2 – xdef integrate_f(double a, double b, int N): cdef int i cdef double s, dx s = 0 dx = (b – a) / N for i in range(N): s += f(a + i * dx) return s * dx

无法直接在 Python 代码中使用以上代码,必须将 Cython 代码放入单独的以 .pyx 为后缀的文件中,并将其编译成 Python 的扩展模块之后才能在 Python 代码中导入使用。比如说将以上代码保存到文件 test.pyx 中,并使用下面的 setup.py 脚本进行编译:

from distutils.core import setupfrom Cython.Build import cythonizesetup(name=’Test’, ext_modules=cythonize(“test.pyx”))

编译命令为:

python setup.py build_ext –inplace

执行以上命令会生成扩展模块 test.so (或者 test.dll 取决于你的操作系统),然后在 Python 代码中 import test 就可以使用该扩展模块了。

显著地加速 Python 数组计算还可以使用 numexpr。

如果要进一步加速 Python 程序,可以考虑并行计算。用 Python 做并行计算的途径有很多,比如说使用标准库中的 [threading 模块](https://docs.python.org/2/library/threading.html)进行线程级别的并行,[multiprocessing 模块](https://docs.python.org/2/library/multiprocessing.html)进行进程级别的并行,[concurrent.futures 模块](https://docs.python.org/3/library/concurrent.futures.html)实现异步并行,使用 [IPython.parallel 模块](https://ipython.org/ipython-doc/3/parallel/index.html)进行多种方式的并行,使用 [mpi4py 包](https://pypi.org/project/mpi4py/)进行 MPI 消息传递并行计算,等等。如果可以使用 C/C++,Fortran 或者使用 cython 为 Python 编写扩展模块,还可以使用 OpenMP 并行。对 GPU 编程则可以使用 [pyCUDA](https://documen.tician.de/pycuda/)。偶的个人[简书专题](https://www.jianshu.com/c/5019bb7bada6)和 [CSDN 博客专栏](https://blog.csdn.net/column/details/26248.html)中有对用 Python 做并行计算的专门介绍并提供了大量的程序实例。有需要或者感兴趣的可以了解下。

python上传图片,python numpy转置,python unset,整数型 Python,能见度检测python,Python compile #,python秃顶,web是python,Python 并发读取,python mongodb ubuntu,python 文件读取 listpython上传图片,python numpy转置,python unset,整数型 Python,能见度检测python,Python compile #,python秃顶,web是python,Python 并发读取,python mongodb ubuntu,python 文件读取 listpython上传图片,python numpy转置,python unset,整数型 Python,能见度检测python,Python compile #,python秃顶,web是python,Python 并发读取,python mongodb ubuntu,python 文件读取 listdiv和css教程,css 的type,css设置北京图片,css网页颜色咋设置,react 引入antd的css,背景图片过滤 css,css3 lodingNumba和Cython如何加速Python代码 - CSS - 前端,python 文件读取 list


Numba和Cython如何加速Python代码 - CSS - 前端,python 文件读取 list
  • 微信插件里没有功能怎么办 - CSS - 前端,css 半星
  • 微信插件里没有功能怎么办 - CSS - 前端,css 半星 | 微信插件里没有功能怎么办 - CSS - 前端,css 半星 ...

    Numba和Cython如何加速Python代码 - CSS - 前端,python 文件读取 list
  • 纪念碑谷第十章攻略如何让艾达走出气象台 - CSS - 前端,css z-index置顶
  • 纪念碑谷第十章攻略如何让艾达走出气象台 - CSS - 前端,css z-index置顶 | 纪念碑谷第十章攻略如何让艾达走出气象台 - CSS - 前端,css z-index置顶 ...

    Numba和Cython如何加速Python代码 - CSS - 前端,python 文件读取 list
  • 全新RAV4这款车值得入手吗 - CSS - 前端,css 日期列表
  • 全新RAV4这款车值得入手吗 - CSS - 前端,css 日期列表 | 全新RAV4这款车值得入手吗 - CSS - 前端,css 日期列表 ...