
Cython入门和进阶
文章平均质量分 75
Cython是一个用于快速编写Python扩展的编程工具,Cython可以说是目前为止最好用的编写Python扩展的工具,它的编程语法融合了Python和C。本专栏根据自己使用Cython的经验,通过实例讲解,希望能帮助更多的人更快的掌握Cython的使用。
I2Cbus
这个作者很懒,什么都没留下…
展开
-
Cython的学习方法
在认识Cython之前,我已经用swig写Python扩展好长一段时间了。 虽然用swig为写Python扩展提供了很大的方便,但是其易用性却仍然不是很好: 1、很多情况下要自己转换输入输出参数,如封装的一个C函数的参数中既是输入又是输出的情况,又如输入参数是一个结构体,而且结构体里的成员变量里又有指针,都必须自己写额外的代码去转换,而swig自定义的参数转换的方式原创 2014-04-15 22:25:36 · 14763 阅读 · 3 评论 -
Cython进阶--用Cython封装Callback函数(续)
细心的人可能已经发现了,在《Cython进阶--用Cython封装Callback函数》中,如果每次获取GIL都要调用一下PyGILState_Ensure,释放时又要调用PyGILState_Release,为了防止其它Python线程被阻塞或者因已经获取GIL的线程因在执行I/O操作而暂停,又要调用PyEval_SaveThread,函数调用完时又要调用PyEval_RestoreThrea原创 2014-01-28 20:19:03 · 3552 阅读 · 0 评论 -
Cython进阶--用Cython封装Callback函数
Cython封装Callback函数1 说明:回调函数,在C语言里是经常要用到的,但是,在Python里封装一个C的回调函数并没有想象的那么简单,本文讲解如何用Cython快速的封装C里的回调函数 2 不多说,先上代码:cdef extern from "pthread.h": ctypedef void * pthread_t ctypedef st原创 2014-01-17 19:36:55 · 6495 阅读 · 1 评论 -
Cython基础--Cython的类
1 Cython支持原生Python的类的定义2 同时Cython也加入封装C++类的支持3 按惯例,先上代码:3.1 rect.pyx# distutils: language = c++cdef extern from "Rectangle.h"namespace "shapes": cdef cppclass Rectangle: Rect原创 2014-02-28 21:35:54 · 6474 阅读 · 1 评论 -
Cython基础--Cython的语句和表达式
Cython的语句和表达式1 Cython的语句和表达式遵循的是Python的语法2 但是由于Cython融合了C语言的语法,有些区别也要注意一下:2.1 Cython里没有“->”操作符,用"."代码,这在上一节结构体的使用中己讲过2.2 Cython里没有指针的取值操作符“*”,用p[0]代替*p2.3 Cython里也有取一个变量的地址操作符&2.4 在Cython里原创 2014-01-18 18:49:27 · 4659 阅读 · 0 评论 -
Cython基础--C结构体,枚举,以及常量在Cython中的定义和使用
C结构体,枚举,以及常量在Cython中的定义和使用1 在Cython里定义一个结构体1.1 先来看个例子: cdef struct AB: int a int b def StructTest(): cdef AB ab ab.a = 1 ab.b = 2 return ab 1.2 测试一下:>>>原创 2014-01-18 18:46:25 · 8691 阅读 · 3 评论 -
Cython基础--Cython的函数
Cython的函数1 函数定义:1.1 在Cython里定义一个类C函数:1.1.1 在这里之所以说是定义一个"类C”函数,而不是一个C函数,是因为它和纯C函数的定义还是有区别的,具体看下面的例子:1.1.2 例1:cdef int Max(int a,int b): if a>b: return a else: return原创 2014-01-18 18:43:27 · 6515 阅读 · 0 评论 -
Cython基础--Cython的类型
Cython的类型1 类型定义1.1 定义一个C变量:1.1.1 在Cython里定义一个C变量和C语言类似,不同的地方就是在声明的最前面要加上cdef,另外,末尾不用加分号";“如:cdef int an[10]cdef int n = 123cdef int *pn = &nprintf("%d \n",pn[0]) 1.1.2 这里要注意原创 2014-01-18 18:40:27 · 9172 阅读 · 0 评论 -
Cython基础--Cython入门
Cython入门 1 Cython是什么? 对你没有看错,是Cython,不是Python当初也我也对这个名字感到很奇怪,但是了解之后,再才知这是我一直想要的工具,比起swig,这个工具要好上很多它是一个用来快速生成Python扩展模块(extentionmodule)的工具它的语法是python语言语法和c语言语法的混血他比swig更容易编写python的扩展模块也许你会说swig可以直接通过c原创 2014-01-12 13:48:56 · 61050 阅读 · 2 评论