Python 的可扩展性

作者: 我爱学python | 来源:发表于2019-05-15 16:58 被阅读22次

Python 具有高可扩展性,存在许多使用 C 语言或 Fortran 编写扩展的方法。必要时,Python 代码可以直接将这些扩展作为子例程来调用。这部分讨论用于构建扩展的一些主要编译器(绝对不是完整列表)。

Cython

Cython(不同于 CPython)既是指一种语言,也是指一种编译器。Cython 语言是添加了 C 语言语法的 Python 语言的超集。Cython 可以在代码段或完整函数中显式释放 GIL。变量和类属性上的 C 类型声明以及对 C 函数的调用都使用 C 语法。其余部分代码则使用 Python 语法。通过这个混合的 Cython 代码,Cython 编译器可生成高效的 C 代码。任何定期优化的 C/C++ 编译器都可以编译此 C 代码,从而高度优化扩展的运行时代码,性能接近于原生的 C 代码性能。

Numba

Numba 是一个动态、即时 (JIT) 且可感知 NumPy 的 Python 编译器。Numba 使用 LLVM 编译器基础架构,生成优化的机器代码和从 Python 调用代码的包装器。与 Cython 不同,编码使用常规的 Python 语言。Numba 可读取来自装饰器中所嵌入注释的类型信息,并优化代码。对于使用 NumPy 数据结构的程序,比如数组以及许多数学函数,它可以实现与 C 或 Fortran 语言类似的性能。NumPy 对线性代数和矩阵函数使用硬件加速,利用 LAPACK 和 BLAS 提供额外加速,大大提升了性能,参见 IBM 博客文章C、Julia、Python、Numba 和 Cython 在 LU 因式分解方面的速度比较。

除 CPU 以外,Numba 还能够使用 GP-GPU 后端。Anaconda, Inc. 是 Python 某个主要发行版的幕后公司,该公司还开发了 Numba 和商业版的 Numba Pro。

Fortran to Python Interface Generator

Fortran to Python Interface Generator (F2Py) 起初为一个独立的程序包,现在包含在 NumPy 中。F2Py 支持 Python 调用以 Fortran 编写的数值例程,就好像它们是另一个 Python 模块一样。因为 Python 解释器无法理解 Fortran 源代码,所以 F2Py 以动态库文件格式将 Fortran 编译为本机代码,这是一种共享对象,包含具有 Python 模块接口的函数。因此,Python 可以直接将这些函数作为子例程来调用,以原生 Fortran 代码的速度和性能来执行。

相关文章

  • Python 的可扩展性

    Python 具有高可扩展性,存在许多使用 C 语言或 Fortran 编写扩展的方法。必要时,Python 代码...

  • python安装及环境变量配置

    python 开源简单易学,新人上手比较容易,python的可移植性,可扩展性和可嵌入yu性,有丰富的库等等有点,...

  • golang和python的区别是啥

    golang和python的区别 1.可扩展性 任何现代企业中的软件的首要事情之一就是可扩展性。 企业迅速增长,I...

  • 第十四章 Python_模块和包

    模块化编程 简介 Python 有时候称为胶水语言,就是因为它有强大的可扩展性,这个扩展性就是用模块实现的。 模块...

  • 15 | 模块和包

    模块化编程 简介 Python 有时候称为胶水语言,就是因为它有强大的可扩展性,这个扩展性就是用模块实现的。 模块...

  • 第十三章 模块和包

    模块化编程 Python 有时候称为胶水语言,就是因为它有强大的可扩展性,这个扩展性就是用模块实现的。 模块其实就...

  • 模块和包

    模块化编程 Python 有时候称为胶水语言,就是因为它有强大的可扩展性,这个扩展性就是用模块实现的。 模块其实就...

  • Python 和 Linux (基础命令)

    Python : 优点:简单、易学、速度快、高层语言、可移植性、解释性、可扩展性、可嵌入性、丰富的库、规...

  • Python学习第二 天

    Python的特色:简单 易学 免费开源 高层语言 可移植性 解释性 面向对象 可扩展性 可嵌入性 丰富的库 基本...

  • 仅需三行Python代码,让数据预处理速度提高2到6倍!

    我们熟知Python语法简单、功能强大、可扩展性强,但是运行速度慢是解释型语言的通病,Python 也不例外。 在...

网友评论

    本文标题:Python 的可扩展性

    本文链接:https://www.haomeiwen.com/subject/hghmaqtx.html