pyx文件 生成pyd 文件用于 cython调用的实现

 更新时间:2021年03月04日 09:33:33   作者:darren2015zdc  
这篇文章主要介绍了pyx文件 生成pyd 文件用于 cython调用的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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”,运行。

补充:python无法导入Cython的.pyx文件?

解决方法:

在import相应包之前,添加:

import pyximport
pyximport.install()

如果上面安装完成后运行程序又出现

No module named pyximport

此时需要:

pip install Cython 

即可~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • Python爬虫入门有哪些基础知识点

    Python爬虫入门有哪些基础知识点

    在本篇文章中小编给大家整理的是关于Python爬虫入门基础知识点整理,有兴趣的朋友们可以跟着学习下。
    2020-06-06
  • python3访问sina首页中文的处理方法

    python3访问sina首页中文的处理方法

    如果用python3的urllib或python2的urllib2访问网页,都不能得到正确的中文字符串,看下面的解决方法
    2014-02-02
  • python实现画图工具

    python实现画图工具

    这篇文章主要为大家详细介绍了python实现画图工具,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • 分析用Python脚本关闭文件操作的机制

    分析用Python脚本关闭文件操作的机制

    这篇文章主要介绍了分析用Python脚本关闭文件操作的机制,作者分Python2.x版本和3.x版本两种情况进行了阐述,需要的朋友可以参考下
    2015-06-06
  • python实现简易自习室座位预约系统

    python实现简易自习室座位预约系统

    本文将结合实例代码,介绍python实现简易自习室座位预约系统,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Python中实现单例模式的n种方式和原理

    Python中实现单例模式的n种方式和原理

    这篇文章主要介绍了Python中实现单例模式的n种方式和原理,需要的朋友可以参考下
    2018-11-11
  • Python批处理删除和重命名文件夹的实例

    Python批处理删除和重命名文件夹的实例

    今天小编就为大家分享一篇Python批处理删除和重命名文件夹的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python OpenCV的基本使用及相关函数

    Python OpenCV的基本使用及相关函数

    这篇文章主要介绍了Python-OpenCV的基本使用和相关函数介绍,主要包括图像的读取保存图像展示问题,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Python+turtle绘制对称图形的示例代码

    Python+turtle绘制对称图形的示例代码

    这篇文章主要是带大家写一个利用Turtle库绘制一些有趣的对称图形,文中的示例代码讲解详细,对我们学习Python有一定帮助,感兴趣的可以了解一下
    2022-07-07
  • Python 调用GPT-3 API实现过程详解

    Python 调用GPT-3 API实现过程详解

    这篇文章主要为大家介绍了Python 调用GPT-3 API实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论