cython?C一样的python

cython能提升python的效率,果断试试

写一个模块测试下。
[root@saltmaster ~]# cat test.py
#!/usr/bin/python2.7
def addX(a,b):
    ax=range(1,int(a))
    bx=range(1,int(b))
    for i in ax:
        for ii in bx:
            ccc=i+ii
            ccc+=ccc
    ccc+=ccc
    print ccc
if __name__=='__main__':
    addX(1000,10000)
#############################################
 [root@saltmaster ~]# cat test1.py 
#!/usr/bin/python2.7
from test import addX
addX(1000,10000)
#############################################
 [root@saltmaster ~]# time ./test1.py 
43992
real    0m1.446s
user    0m1.419s
sys     0m0.013s

看时间
#############################################
下载一个cython
[root@saltmaster ~]# /usr/local/python27/bin/pip install cython 

创建一个转换脚本
[root@saltmaster ~]# cat change.py 
#!/usr/bin/python
from distutils.core import setup  
from distutils.extension import Extension  
from Cython.Distutils import build_ext 
setup(  
  
cmdclass = {'build_ext': build_ext},  
  
ext_modules = [Extension("myc", ["test.py"])]
) 

[root@saltmaster ~]# python change.py build_ext --inplace
 把test.py这个模块编译成myc的   C 模块 ,能这样说吗?
[root@saltmaster ~]# ls
build  change.py  finish  myc.so  pyscript  socket  test1.py  test.c  test.py  test.pyc  twisted  var

生成了myc.so
#############################################
[root@saltmaster ~]# cat test1.py 
#!/usr/bin/python2.7
from myc import addX
addX(1000,10000)

换下模块,然后测试
[root@saltmaster ~]# time ./test1.py 
43992
real    0m0.630s
user    0m0.612s
sys     0m0.008s

效率提高了一倍多。。。。


你可能感兴趣的:(cython?C一样的python)