关闭

pyx文件 生成pyd 文件用于 cython调用

4082人阅读 评论(1) 收藏 举报
分类:

参考: http://www.2cto.com/kf/201405/304168.html

参考: http://blog.csdn.net/darren2015zdc/article/details/54574868   


pyx文件是python的c扩展文件,代码要符合cython的规范,用什么编辑器写都行。我在eric4上写的,结果它默认用python解释器来进行解释,还提示有bug,“语法错误”。

上面的pyx文件还仅仅是源代码文件,要想被python调用、要想运行,仅仅写了源代码还是不够的。具体来说,还要转成.c或者.c++的文件,并且再进一步转成.pyd文件。pyd文件才是可以直接使用的文件。为了达到上述目的,就要写一个setup.py脚本,如下:

#!/usr/bin/python
#python version: 2.7.3
#Filename: SetupTestOMP.py
 
# Run as:  
#    python setup.py build_ext --inplace  
   
import sys  
sys.path.insert(0, "..")  
   
from distutils.core import setup  
from distutils.extension import Extension  
from Cython.Build import cythonize  
from Cython.Distutils import build_ext
   
# ext_module = cythonize("TestOMP.pyx")  
ext_module = Extension(
                        "TestOMP",
            ["TestOMP.pyx"],
            extra_compile_args=["/openmp"],
            extra_link_args=["/openmp"],
            )
   
setup(
    cmdclass = {'build_ext': build_ext},
        ext_modules = [ext_module], 
)
这个完全是一个python脚本,可以在python解释器下面运行。在控制台下,运行如下命令‘python setup.py build_ext --inplace’,就生成了TestOMP.pyd文件。当然,同时还有一些杂七杂八的文件,如‘build’目录下面的‘lib’文件。这都提示着,这是在windows vistual studio环境下。在linux+gcc环境下,就要生成.so文件了,而且“/openmp”的选项就要写成“-fopenmp”

写TestOMP.py

文件上述两个步骤,相当于把某个python效率瓶颈模块(这之前需要用profile工具来定位)用效率更高的代码写成了python的c扩展形式,接下来,就是要在python代码中调用他们。TestOMP.py就是这个调用的脚本,如下:

from TestOMP import Test 
Test()
这个就很容易了,import并且调用。在控制台下,输入“python TestOMP.py”,运行。




1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:94853次
    • 积分:1822
    • 等级:
    • 排名:千里之外
    • 原创:68篇
    • 转载:132篇
    • 译文:1篇
    • 评论:6条
    文章分类
    最新评论