如何使用cython编译扩展

如何使用cython编译扩展,第1张

先是安装Cython。由于我只有Windows,所以就只介绍这个平台。

英文的说明可以看《InstallingOnWindows》,共有2步:

一、安装裂核橡MinGW。现在SF已不提供完整安装版了,只能下载在线安装版。由于Cython也支持C++,所以我也勾选了g++编译器

装好后把MinGW目录/bin加入PATH环境变量,并保证gcc --version可以正确执行氏档。

接着去Python目录\Lib\distutils下添加一个distutils.cfg文件,内容如下:

[build]

compiler = mingw32

实际上这最后一步也可不做,但每次编译都需要加一个-c参数来指定编译器。

二、安肆旁装Cython。

我是直接下载exe版本的,直接运行即可。Python 2.4可能还要做些额外处理,我没有这个版本,没法测试

接着就可以来测试了,先来写个hello world。

hw.py:

def hi():

print "Hello World"

setup.py:

from distutils.core import setup

from distutils.extension import Extension

from Cython.Distutils import build_ext

setup(

cmdclass = {'build_ext': build_ext},

ext_modules = [Extension("hw", ["hw.py"])]

)

然后运行这段代码进行编译:

setup.py build_ext --inplace

这就生成了很多文件,其中hw.pyd就是生成的C扩展了。

接着测试一下:

>>>from hw import hi

>>>hi()

Hello World

然后来测试下性能:

csigma.py和pysigma.py:

def sigma(n):

a = 0

for i in xrange(n):

a += i

return a

测试脚本:

from timeit import Timer

print Timer('sigma(10000)','from csigma import sigma').timeit(10000)

print Timer('sigma(10000)','from pysigma import sigma').timeit(10000)

setup.py写吵耐法,参考 这里

linux:

windows:

在cython3上线之前,windows下编译init始终有个问题:

这个问题是当前cython对windows包支持不好导致的,可以使用 如下局指方法 修复:

打开cython安装目录:

打开 安装目录\cython\Compiler\ModuleNode.py ,替换如下内容:

替换为

然后升腊春删除项目build下的文件夹,重新buid就行了

python setup.py bdist_wheel


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12302412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存