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 break语句详解
Mar 11 Python
Python通过websocket与js客户端通信示例分析
Jun 25 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
Python实现的多项式拟合功能示例【基于matplotlib】
May 15 Python
python celery分布式任务队列的使用详解
Jul 08 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
logging level级别介绍
Feb 21 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
python - timeit 时间模块
Apr 06 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 AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
深入理解PHP中的count函数
2016/05/31 PHP
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
python读写文件操作示例程序
2013/12/02 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
Python PO设计模式的具体使用
2019/08/16 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
接待员岗位责任制
2014/02/10 职场文书
司法所长先进事迹
2014/06/02 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
法律讲堂观后感
2015/06/11 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
Django Paginator分页器的使用示例
2021/06/23 Python
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫