当前位置: 首页 > news >正文

高端网站策划公司中卫市住房建设局网站

高端网站策划公司,中卫市住房建设局网站,三杰网站建设,做网站需要前置审批目录 1. Cython 笔记 (Python)2. python 加速库 cython 简介2.1. Cython 是什么?2.2. 如何安装 Cython?2.3. 简单示例2.4. 性能比对2.5. 总结 3. PYTHON, CYTHON, JYTHON, IRONPYTHON 的区别 (注意: 此篇有误导,表述不一定正确,只提供一个方向)3.1. PY…

目录

  • 1. Cython 笔记 (Python)
  • 2. python 加速库 cython 简介
    • 2.1. Cython 是什么?
    • 2.2. 如何安装 Cython?
    • 2.3. 简单示例
    • 2.4. 性能比对
    • 2.5. 总结
  • 3. PYTHON, CYTHON, JYTHON, IRONPYTHON 的区别 (注意: 此篇有误导,表述不一定正确,只提供一个方向)
    • 3.1. PYTHON, CYTHON
    • 3.2. JYTHON
    • 3.3. IronPython
    • 3.4. python 命名空间

1. Cython 笔记 (Python)

Cython: C-Extensions for Python

C vs. Cython vs. Mojo Comparison Chart

Cython is an optimising static compiler for both the Python programming language and the extended Cython programming language (based on Pyrex). It makes writing C extensions for Python as easy as Python itself.

Cython 是 Python 编程语言和扩展 Cython 编程语言(基于 Pyrex) 的优化静态编译器。它使得为 Python 编写 C 扩展和 Python 本身一样简单。

2. python 加速库 cython 简介

2.1. Cython 是什么?

Cython 是让 Python 脚本支持 C 语言扩展的编译器, Cython 能够将 Python+C 混合编码的。pyx 脚本转换为 C 代码, 主要用于优化 Python 脚本性能或 Python 调用 C 函数库。由于 Python 固有的性能差的问题, 用 C 扩展 Python 成为提高 Python 性能常用方法, Cython 算是较为常见的一种扩展方式。

2.2. 如何安装 Cython?

我们可以通过 conda 或者 pip 来进行安装, 命令如下:

$ conda install -c anaconda cython

或者

$ pip install Cython

2.3. 简单示例

安装完成后, 我们以一个简单的 Cython 项目作为例子, 来说明 Cython 的编译步骤.首先我们需要知道 Cython 源文件均以 .pyx 结尾.比如我们需要定义一个简单的返回一个字符串的函数, 如下所示:

  1. 创建 examples_cy.pyx
$ touch examples_cy.pyx
  1. 往里写入函数 hello_cython, 如下所示
def hello_cython():return "Hello Cython!"
  1. 在同级目录下创建 setup.py, 该文件负责编译上述 pyx 文件生成 .c.so 文件
$ touch setup.py

内容如下:

from distutils.core import setup
from Cython.Build import cythonize
setup(name="Example Cython",ext_modules=cythonize(["examples_cy.pyx"])
)
  1. 执行编译命令
python setup.py build_ext --inplace

执行上述命令, 进行编译, 编译前目录结构如下:

编译过程如下:

编译后如下:

  1. 编写 main.py, 进行验证
$ touch main.py

内容如下:

from examples_cy import hello_cython
print(hello_cython())

执行结果如下:

2.4. 性能比对

学会上面简单的操作后, 接下来我们来举一个稍微复杂的例子来对比使用 Python 和 Cython 的性能.我们以计算以下级数为例来做相关性能对比:

  1. 使用 python 代码实现如下:
def pi_py(N):pi = 0for n in range(N):pi += (-1.0)**n/(2*n + 1)return 4*pi
  1. 使用 cython 代码实现如下:

在上述 examples_cy.pyx 里, 使用 cython 语法实现上述操作, 代码如下:

cpdef double pi_cy(int N):cdef double pi = 0cdef int n;for n in range(N):pi += (-1.0) ** n / (2 * n + 1)return 4 * pi

上述代码中的 cpdef 表明在 C 语言层面声明了函数。正如我们所知道的在 C 语言中你必须为每一个函数定义返回值的类型.一般来说 def 定义的函数可以从 python 和 Cython 调用, 而 cdef 可以从 Cython 和C调用.

  1. 再次编译
python setup.py build_ext --inplace
  1. main.py 中编写统计耗时函数
from examples_cy import hello_cython,pi_cy
import timedef pi_py(N):pi = 0for n in range(N):pi += (-1) **n / (2*n + 1)return 4*piif __name__ == "__main__":print(hello_cython())stime = time.time()for _ in range(100):out1 = pi_py(1000000)etime = time.time()stime2 = time.time()for _ in range(100):out2 = pi_cy(1000000)etime2 = time.time()print("pi_py result {} time cost {} s".format(out1, etime - stime))print("pi_cy result {} time cost {} s".format(out2, etime2 - stime2))

我们统计上述两个函数执行 100 次的时间, 结果如下:

2.5. 总结

使用 Cython 和 Python 完成上述通过计算级数来实现 pi 值的逼近, 使用 Cython 相比 Python 效率可以提升 5 倍​以上。

3. PYTHON, CYTHON, JYTHON, IRONPYTHON 的区别 (注意: 此篇有误导,表述不一定正确,只提供一个方向)

python 源代码 ====> python 字节码 ======> 运行虚拟机

3.1. PYTHON, CYTHON

将这两个放在一起, 是因为 python 的标准和原始实现就是基于 cython 的, 由于 python 的源代码是需要将 python 源码首先编译为 c 代码, 然后再编译为本机代码的方式运行的, 由于 c 语言和本机代码的关系, 执行速度比较快。

3.2. JYTHON

首先将 python 编译为基于 java 字节码的字节码文件, 然后在 java 虚拟机 jvm 上运行 java 字节码

ython 是一种完整的语言, 而不是一个 Java 翻译器或仅仅是一个 Python 编译器, 它是一个 Python 语言在 Java 中的完全实现。Jython 也有很多从 CPython 中继承的模块库。最有趣的事情是 Jython 不像 CPython 或其他任何高级语言, 它提供了对其实现语言的一切存取。所以 Jython 不仅给你提供了 Python 的库, 同时也提供了所有的 Java 类。这使其有一个巨大的资源库。

3.3. IronPython

将 python 编译为基于 .NET 的 CLI 的中间语言文件, 然后在 CLR 上运行。

3.4. python 命名空间

对于 python 来说, 命名空间是变量的封装, 最直接的命名空间就是文件, 文件是该文件中的变量的封装, 每一个模块文件自动成为一个命名空间, 每个模块文件都是独立完备的命名空间, 文件必须明确地导入其他的文件, 才可以使用这些文件的变量名。

http://www.yayakq.cn/news/12379/

相关文章:

  • 上栗网站建设哪个网站域名解析
  • 我想学做网站免费的企业网站
  • 作风建设网站首页怎么用vs做网站
  • 如何建立网站快捷方式到桌面佛山市建设局网站
  • 琼海商城网站建设微信公众平台开发源码
  • p2p网站功能嵌入式开发要学什么
  • 做建材去什么网站哪里可以学做资料员的网站
  • 网站大图怎么做更吸引客户厦门网站建设外贸
  • 网站运营与推广方案网站百度秒收
  • o2o电商网站建设制作网站需要哪些知识
  • 网站后台管理系统安装沈阳做网站找黑酷科技
  • 汉川建设局网站手游网站怎么做的
  • 域名备案掉了网站还可以用吗全国建筑工程网
  • 怎么开一家网站开发公司提供温州手机网站制作多少钱
  • 杭州品牌网站沈阳建设工程招投标网
  • 手机网站建设的公司做任务网站有哪些内容
  • 手机直播网站开发网站改版多久恢复
  • 文稿写作网站旅游网站建设模板下载
  • 评价一个网站设计的好坏企业邮箱模板
  • asp绿色简洁通用型企业网站源码wordpress必备工具
  • 贵阳网站建设培训手机网站制作流程图
  • 电子商务网站建设有管理课后答案免费的php网站模板
  • 查网站备案网站建设空间步骤详解
  • 网站做sem能够提高收录量吗淮北招聘网淮北论坛
  • 淮滨网站建设公司微网站建设流程
  • 句容市建设工程管理处网站推广app收益排行榜
  • 深圳php网站建设网址查询工具
  • 南昌教育网站建设做网站主色调选择
  • 嘉兴网站个人博客主页登录
  • 购物网站设计的意义金融公司网站模板