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


Posted in Python onMarch 04, 2021

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下载FTP上的文件夹的实现代码
Feb 10 Python
深入解读Python解析XML的几种方式
Feb 16 Python
python timestamp和datetime之间转换详解
Dec 11 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
python如何读取bin文件并下发串口
Jul 05 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
Jul 19 Python
seek引发的python文件读写的问题及解决
Jul 26 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
python集合的新增元素方法整理
Dec 07 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 #Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 #Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 #Python
python 指定源路径来解决import问题的操作
Mar 04 #Python
python源文件的字符编码知识点详解
Mar 04 #Python
python3判断IP地址的方法
Mar 04 #Python
Python解析m3u8拼接下载mp4视频文件的示例代码
Mar 03 #Python
You might like
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php使用正则验证中文
2016/04/06 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
学习vue.js计算属性
2016/12/03 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
python去除扩展名的实例讲解
2018/04/23 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
python处理document文档保留原样式
2019/09/23 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
原生python实现knn分类算法
2019/10/24 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
python实现单机五子棋
2020/08/28 Python
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
自我评价怎么写正确呢?
2013/12/02 职场文书
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
学校实习推荐信
2015/03/27 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
小时代观后感
2015/06/10 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
Windows7下FTP搭建图文教程
2022/08/05 Servers