开发手册 欢迎您!
软件开发者资料库

Python 扩展模块Cython安装及使用

​ Cython是一种通过python语法编写C扩展的编程语言,源代码可被翻译成优化的C/C++代码并编译成Python扩展模块。 Cython使得Python语言的C扩展与Python一样简单。本文主要介绍Python 扩展模块Cython安装及使用。

1、Cython安装

​ Python官方就提供了Python/C API可以实现Python和C语言混合编程,但编写复杂,入门门槛较高。Cython的出现为解决此问题。Cython的编译环境需要有C编译器,安装Cython可以直接通过pip。

编译器安装:

1)RedHat

yum install gccyum install gcc-c++ libstdc++-devel

2)Ubuntu

sudo apt-get install gccsudo apt-get install g++pip install cython

3)Windows

参考文档:Windows上MinGW安装配置教程

安装Cython:

pip install Cython

相关文档:https://cython.readthedocs.io/en/latest/src/quickstart/install.html

2、Cython的使用

1)创建simple.pyx文件

文件扩展名为.pyx,内容如下:

print("url=https://www.wonhero.com")

2)创建setup.py来编译

setup.py文件内容如下:

from setuptools import setupfrom Cython.Build import cythonizesetup(ext_modules = cythonize("simple.pyx"))

3)终端执行命令

python .\setup.py build_ext --inplace

相关文档:https://cython.readthedocs.io/en/latest/src/quickstart/build.html

执行后目录下应该出现2个文件:simple.c,simple.cp38-win_amd64.pyd,和一个文件夹:build

注意:Linux系统下编译不会得到.pyd文件,而是会得到.so文件。

import simple

执行import simple会输出:

url=https://www.wonhero.com

3、Cython完整示例

1)demo.pyx

import cythonimport numpy as npcimport numpy as npcdef extern from "demolibrary.h":    void _scale "scale" (float*, int, float)np.import_array()@cython.boundscheck(False)@cython.wraparound(False)def scale(np.ndarray x, float mult):    _scale( np.PyArray_DATA(x), x.size, mult)    return xdef foo(float x):    cdef float y    y = 2 * x    return y

2)编译

python setup.py build_ext --inplace

3)调用

import pyldpc_generateH = pyldpc_generate.generate(512,1024,3.0,2,123)

源码地址:https://github.com/fasiha/cython-demo