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 Django模板的使用方法(图文)
Nov 04 Python
urllib2自定义opener详解
Feb 07 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
Python 中Pickle库的使用详解
Feb 24 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
详解Python利用random生成一个列表内的随机数
Aug 21 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 Python
python实现PCA降维的示例详解
Feb 24 Python
Python pytesseract验证码识别库用法解析
Jun 29 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
php输出xml属性的方法
2015/03/19 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
vue中动态添加class类名的方法
2018/09/05 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
python中有帮助函数吗
2020/06/19 Python
Python json格式化打印实现过程解析
2020/07/21 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
元旦红领巾广播稿
2014/02/19 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
美术指导助理求职信
2014/04/20 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
投标授权委托书范文
2014/08/02 职场文书
工作总结与自我评价
2014/09/18 职场文书
社会工作专业自荐信
2014/09/26 职场文书
道德与公民自我评价
2015/03/09 职场文书
入党函调证明材料
2015/06/19 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL