• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 .py生成.pyd文件并打包.exe 的注意事项说明
    • python 中 .py文件 转 .pyd文件的操作
    • python 指定源路径来解决import问题的操作
    • Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
    上一篇:Python .py生成.pyd文件并打包.exe 的注意事项说明
    下一篇:pandas数据分组groupby()和统计函数agg()的使用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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