gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章pyx文件 生成pyd 文件用于 cython调用的实现由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

上面的pyx文件还仅仅是源代码文件,要想被python调用、要想运行,仅仅写了源代码还是不够的。具体来说,还要转成.c或者.c++的文件,并且再进一步转成.pyd文件.

pyd文件才是可以直接使用的文件。为了达到上述目的,就要写一个setup.py脚本,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/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就是这个调用的脚本,如下:

?
1
2
from TestOMP import Test
Test()

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

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

解决方法:

在import相应包之前,添加:

?
1
2
import pyximport
pyximport.install()

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

No module named pyximport 。

此时需要:

?
1
pip install Cython

即可~ 。

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

原文链接:https://blog.csdn.net/darren2015zdc/article/details/54574911 。

最后此篇关于pyx文件 生成pyd 文件用于 cython调用的实现的文章就讲到这里了,如果你想了解更多关于pyx文件 生成pyd 文件用于 cython调用的实现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com