python怎么使用cython

1. Cython是什么?

它是一个用来快速生成Python扩展模块(extention module)的工具

语法是Python和c的混血

Cython作为一个Python的编译器,在科学计算方面很流行,用于提高Python的速度,通过OpenMPI库还可以进行吧并行计算。

2. Cython安装(Windows)

我的环境是win7 x64, python27, vs2010

安装的基础是有一个c编译器(这里以vs2010为例)

从下载安装包,解压到一目录,进入该目录,在cmd命令行中执行

python setup.py install

注:执行过程可能遇到问题:Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat

解决方案:下载Microsoft Visual C++ Compiler for Python 2.7,点击直接安装即可。

3. 例子

例3.1:入门

创建hello.pyx,内容如下

def say_hello():

print "Hello World!"

创建setup.py,内容如下

from distutils.core import setup

from Cython.Build import cythonize

setup(name = 'Hello world app',

ext_modules = cythonize("hello.pyx"))

编译Cython代码

step1: 把.pyx文件被Cython便以为.c文件

step2: 把.c文件编译为可导入的使用模块.so(Windows下为.pyd)文件

python setup.py build

python setup.py install

注:可能出现问题:Unable to find vcvarsall.bat

原因:Python 2.7 会搜索 Visual Studio 2008.如果你电脑上没有这个版本的话就会报错。

如果装的是vs2010,那么在cmd命令行中执行

SET VS90COMNTOOLS=%VS100COMNTOOLS%

如果装的是vs2010,那么在cmd命令行中执行

SET VS90COMNTOOLS=%VS110COMNTOOLS%

>>> import hello

>>> hello.say_hello()

Hello World!

例3.2 通过静态类型提高速度

在Cython中可以通过标记静态类型来提高速度,凡是标记为静态类型的部分都会将动态语言类型变为简单的c代码,从而提速。

但是如果滥用静态类型,会降低可读性,甚至因类型设置不当导致错误类型检查造成速度降低。

例3.2.1 静态类型变量

Python原生态代码

compute.pyx

def f(x):

return x ** 2 - x

def integrate_f(a, b, N):

s = 0

dx = (b - a) / N

for i in range(N):

x += f(a + i * dx)

return s * dx

setup.py

from distutils.core import setup

from Cython.Build import cythonize

setup(

name = 'Hello world app',

ext_modules = cythonize("compute.pyx"),

test.py

import compute

import time

starttime = time.clock()

compute.integrate_f(3.2, 6.9, 1000000)

endtime = time.clock()

print "read: %f s" %(endtime - starttime)

python setup.py build

python setup.py install

python test.py

read: 0.332332 s

使用静态变量替换后的代码

compute2.pyx

def f(double x):

return x ** 2 - x

def 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 * d

setup2.py

from distutils.core import setup

from Cython.Build import cythonize

setup(

name = 'Hello world app',

ext_modules = cythonize("compute2.pyx"),

test2.py

import compute2

import time

starttime = time.clock()

compute2.integrate_f(3.2, 6.9, 1000000)

endtime = time.clock()

print "read: %f s" %(endtime - starttime)

python setup.py build

python setup.py install

python test.py

read: 0.109200s

该测试用例,使用静态类型速度是不使用静态类型的3倍。

例3.2.2 静态类型函数

把compute2.pyx中的函数变为

cdef double f(double x):

return x ** 2 - x

def 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

read: 0.084859 s

结论:比例子3.2.1速度又快了

例3.3 调用C函数

cdef extern from "math.h":

double sin(double)

double cos(double)

cpdef double Sin(double x):

return sin(x)

cpdef double Cos(double x):

return cos(x)

cpdef: 对于Python可使用的函数使用(为了使得在以后的Python程序中调用Sin,Cos函数,用cpdef,而不用cdef)

cdef: 对于C可使用的函数使用

请注意,上面的代码声明了 math.h 里的函数,提供给 Cython 使用。C编译器在编译时将会看到 math.h 的声明,但 Cython 不会去分析 math.h 和单独的定义。cython是用c写的python实现

cython是不同的语言,相当于python再加上些c特性,比如说类型声明。1.找个工具将这个接口API,自动转换成python版本的就可以了。好象是SWIG和Boost。 这两个以前看过,偶尔还试过几次。

2.之所以建议你用自动工具,就是因为python对于C++扩展麻烦些,对于C语言接口可以使用ctypes和cython简单解决。

python中" "与' '的区别

python中“ ”与‘ ’在表示字符串时是没有区别的

在输出时,输出内容有“ ”(双引号)则在单引号内使用双引号,即‘“要输出内容”’;

输出内容有‘ ’(单引号)则在双引号内使用单引号,即“‘要输出内容‘“;

补充:''' (三引号)用法:

1、用作多行注释;2、用作表示一个字符串

注:python中并没有提供专门的多行注释的符号,当一串字符被三引号引用时,但它不作为字符串被操作时,这个三引号内引用的内容就被视为注释。

希望我的回答对你有所帮助,谢谢1. 普通字符串中没有区别:如'abc'和"abc"是一样的;

2. 如果字符串中本身就有单引号或双引号,则要使用另一种引号将该字符串引起来才合法:如'he is a "student" !' , “he is a 'student' !”

3.接着2说,如果字符串中本身就有单引号或双引号,还有一种合法的使用方式是,最外层使用的引号和字符串的相同,但是字符串本身的引号要使用反斜杠转义,如:

'he is a \'student\' !' , "he is a \"student\" !"

4.再就是三引号"""abc""" , '''abc'''可以跨越多行。

*.所以就我了解到的,光单引号和双引号的使用没啥大区别python是一种脚本语言,它的运行需要python解释器,属于解释型的语言,python本身就是由c语言开发出来的,而且是开源的,由此可见c语言的强大,美国宇航局使用的就是python; c语言属于中级语言,它介于高级和低级语言之间,c是编译型的语言,它的运行必须经过编译器的处理才能形成最终的执行代码,c语言的应该非常广泛,c语言最主要的用途就是系统底层的应用。

cython(cython安装)相关推荐

  1. Cython配置安装(ubuntu)

    1. 安装C.C++编译器 ​ Linux安装gcc和g++(C++)的库 两个工具需要进入命令行输入命令,按下ctrl + alt + T ,进入命令行,依次输入下列命令(每次命令输入完需要回车确认 ...

  2. cython安装、使用

    cython安装.使用 原创 2012年09月27日 17:25:11 8436 0 0 一.cython 在linux(ubuntu)下安装 sudo apt-get install cython ...

  3. Py之cython:python库之cython的简介、安装、使用方法之详细攻略

    Py之cython:python库之cython的简介.安装.使用方法之详细攻略 目录 cython的简介 cython的安装 cython的使用方法 cython的简介 Cython语言使得Pyth ...

  4. Maya mayapy.exe 安装 Cython,编译 pyd

    Maya mayapy.exe 安装 Cython,编译 pyd 前言 在 Python 2.7 cython cythonize py 编译成 pyd 谈谈那些坑 中最后提到,使用  VCForPy ...

  5. cython 安装升级_浅尝Kivy

    Kivy简介 Kivy 是一套 Python 下的跨平台快速应用开发框架,对于多点触控有着良好的支持.不用深入学习 Java 或 Object C 即可开发流行智能手机平台应用. Kivy 依据允许商 ...

  6. Cython(一)安装与使用

    Cython Cython是让Python脚本支持C语言扩展的编译器,Cython能够将Python+C混合编码的.pyx脚本转换为C代码,主要用于优化Python脚本性能或Python调用C函数库. ...

  7. 安装OpenCV、cython、numpy和h5py

    安装OpenCV: 一. 系统烧录 Raspberry Pi Imager 烧录步骤: 软件下载地址:Raspberry Pi OS – Raspberry Pi (建议提前准备一张容量在8G以上的S ...

  8. Cython的简单使用

    from:http://www.cnblogs.com/freeweb/p/6548208.html 补充:在我mac上的加速效果: 最初: runing1 time: 0.233466 s runi ...

  9. python 大项目使用cython_提升6.75倍!利用Cython为Python代码加速

    全文共2012字,预计学习时长4分钟 图片来源:Unsplash 如果你曾经用Python编写过代码,可能会发现等待某些代码块执行的时间比预期要长.尽管可以通过一些方法提高其代码效率,但它的反应速度仍 ...

最新文章

  1. 设计模式之建造者模式(生成器模式、Builder)摘录
  2. Go进阶:反射3定律
  3. SQL Server误区30日谈-Day26-SQL Server中存在真正的“事务嵌套”
  4. CentOS 7下用firewall-cmd
  5. WinCE中命令行工具cvrtbin简介
  6. cookie与session详解、url地址重写
  7. day15【前台】项目发布
  8. QuantLib 金融计算——基本组件之 Date 类
  9. (Web前端)后台管理系统框架收集
  10. SPSS典型相关分析(Canonical Correlation Analysis)案例(SPSS25最新版)
  11. Multi-Object Trackers
  12. Color Mapping
  13. fastadmin保持用户登陆状态
  14. 优酷视频APP的缓存视频在哪里
  15. UNI-APP安卓本地打包详细教程(保姆级)
  16. ubuntu安装deb文件包
  17. 前端开发中的跨域问题及解决方案
  18. android换手机照片怎么转移,换手机了怎么把照片转移到新手机
  19. 用opencv实现两张半透明png图片以一定透明度叠加
  20. Ubuntu18.04 安装Nvidia驱动+CUDA+cuDNN+Anaconda3(图文超详细)

热门文章

  1. 无人机快速三维建模平台
  2. AMBA总线协议 之 APB总线协议
  3. 学习python/pytorch过程中遇到的知识点
  4. htb inject
  5. SQL Inject
  6. 实现点击按钮 复制文本内容
  7. Web前端开发常用的开发工具
  8. 啥都不说了,今天就是要送书!
  9. HTML5 的Input 类型
  10. Java SE 小白学习笔记 周周测 从小白到大牛