当前位置:首页>python>Cython:Python 加速工具

Cython:Python 加速工具

  • 2026-10-11 06:16:53
Cython:Python 加速工具

当你把 Python 学透之后,你会发现速度远不如 C,所以,不想学 C 的读者们,来学学这个cython.

在此之前,我们要安装:

Cython,visual studio build tools或者minGW

所以可以执行下面终端命令:

python -m pip install cython

然后编译器的话,可以去官网安装,如果不是 Windows,可以使用sudo和brew和apt。

好了之后,就可以开始了,cython的文件后缀名是.pyx,编译结果是.pyd,编译结果就是底层 C 扩展库,Python 里面的 OS模块就是os.pyd,今天我们就能做一个这样的模块。

因为编辑器极其少,所以直接使用文本编辑器(macOS and Linux)记事本(Windows),first.pyx:

cpdef int firstf(int a,int b):

   print('hello')

   return a+b

我来解释一下:首先cpdef 定义一个C 内部加速,Python 调用,就是同时让 C 和 P 都能调用。

然后那个 int,是 C 里面的整数类型声明符,然后int a,int b也是 C 类型声明.

然后能编译了:

不想写或不懂setup.py的读者可以直接运行

python -m cythonize -i first.pyx

这个终端命令。

执行完之后,同文件夹下多了一个文件,那就是编译好的 PYD 文件,注意 千万不要改名,后面的一大串版本号要先看清再去掉。比如说如果看到里面有cp311这样的,就表示只有在CPython 3.11中才能使用。cpython 就是标准的 Python,举个例子,你从 Python 官网下载的就是标准的 cPython,在 Windows 中,CPython的文件名一般会如下:

python.exe

python3.exe

python3.11.exe

在PyCharm或者 VSCode中,然后在运行栏显示解释器名称。

注意这个 Python不能是从应用商店下载的,必须从官网下载才能正常使用xxx-cp3xx-xxxxxxxx.pyd文件。

编译完就可以使用了。

在 PYD 文件的同一目录下,新建一个test.py,代码如下:

import first

print(first.firstf(1,4))

运行之后能看到

hello

5

表明正常。

Cython的语法和 Python 有区别,接下来再学习。

def&cdef&cpdef

三个似乎都是定义,有什么区别?

def:Python 关键字,定义函数

cdef:Cython关键字,定义C变量函数类,Python不可调用

cpdef :cython关键字,定义Python可调用函数类,c内部可调用,同时有内部加速,也可以外部调用。

cdef,cpdef:

cdef xxx:定义一个 C 的变量、函数或类,语法如下:

(函数)cdef 标识符 函数(参数)

(声明变量)cdef 标识符 变量

(类)cdef class xxxxx

大概就是这样。

另一个差不多,只是一个给内部调用 一个给外部调用,并且底层 C 加速。

cimport

导入一个cython模块,可以是标准模块,也可以是一个.pxd文件。

举个例子:

a.pxd

print('test')

b.pyx

cimport a

上面的那个命令,可以导入a模块。官方内置了一些pxd模块,比如cmath,stdlib,string等等。

学了 C 之后来学也会更好。

下次学习更好的编译,setup.py

最新文章

随机文章