cython加速python_安装与简单使用

1.写一个test.pyx(一般是py,但为了用cython编译,我们需要把后缀改成.pyx )

import time
def prime_num(max_num):
    for num in range(2, max_num):
        if num < 2:
            pass
        elif num == 2:
            pass
        else:
            for i in range(2, num):
                if num % i == 0:
                    pass
            else:
                print(num)
if __name__=='__main__':
    start=time.time()
    prime_num(100000)
    print(time.time()-start)


'''run time:22.940618753433228'''

2. 在同目录下,准备一个执行cython编译的脚本:setup.py

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

filename = 'test'  # 源文件名
full_filename = 'test.pyx'  # 包含后缀的源文件名

setup(
    cmdclass={'build_ext': build_ext},
    ext_modules=[Extension(filename, [full_filename])]  # 配置需要cython编译的源文件
)

3.CMD进入该目录,执行  python setup.py build_ext --inplace

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

如果出现“error: Unable to find vcvarsall.bat”的错误

Python3.5在Windows环境下安装一些模块时,会出现“error: Unable to find vcvarsall.bat”的错误,主要原因是因为Python的Setup需要调用vcvarsall.bat的文件,这个文件在C++的编程环境中才会有。有两种方法解决:安装MinGW;安装VS。安装VS的方法比较彻底一些,适用于python各个版本。

1. 检查Python安装路径中的_msvccompiler.py文件看需要什么版本的VS。

  一般的路径:C:\python35\Lib\distutils\_msvccompiler.py

  在该文件中找到_find_vcvarsall方法,其中类似“if version >= 14 and version > best_version:”的语句中,这里是14说明要VS的版本在14及以上才可以,那么要安装的就是VS2015。(其他的版本,如9就是需要VS10即可)

VS下载地址:https://my.visualstudio.com/Downloads?q=Visual

2. 下载安装VS2015。在安装时,一定要勾选C++环境,以及Python Tools for Visual Studio。我之前安装过VS2015,但是在Python中依然出现标题中的问题,原因就是没有选择这两个选项。如果在安装过程,出现了一直停留在“Configuring Your System”的问题,可以把VS进程杀掉试试。

原文:https://blog.csdn.net/youngwhz1/article/details/53303769 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

编译成功后,在同目录下会生成以下编译好的文件(后缀是.pyd) ,它可以被python直接import,为了import找错文件,我们这里删掉test.pyx

4.使用

import test
test.prime_num(100000)

'''13.06978225708008'''

5.与上述无关的内容,很好奇我用pypy+cython试试

哎。。。。

pypy却快了将近20倍,实际上:这是因为我们仍旧采用纯python的语法来编写。这样尽管用cython来编译,执行的时候还是按照python的那一套来运行的。因此效率并不会提升。但是,正因为是用cython编译,我们可以在test.pyx上对源代码进行修改,加入C语言的一些语法,这样就能快很多了。
 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值