cython的python的区别就在于,在cython里你也要对变量指定类型
我们知道python中是不需要对变量指定类型的,程序会自己判断,这也导致了python的运行慢
Python
x = 5
C/C++
int x = 5
Cython
将python代码用cython编译cdef int x = 5 或 cpdef int x = 5
例如我们现在有python代码hxx_try.py
def hxx_test(x): y = 0 for i in range(x): y += i return y
首先,将hxx_try.py修改后缀名为hxx_try.pyx, 然后新建setup.py
setup.py
from setuptools import setup from Cython.Build import cythonize setup( name = 'hxx_learn_cython', ext_modules = cythonize("hxx_try.pyx"), zip_safe = False, )
zip_safe=False要带着
然后
python setup.py build_ext --inplace
新生成.c文件,.so文件和build目录
目录结构是
此时,新建一个python文件
from hxx_try import hxx_test print(hxx_test(10))
就可以执行了
实际发挥作用的是hxx_try.cpython-38-x86_64-linux-gnu.so这个文件。将其他文件包括hxx_try.pyx删除,程序仍然可以执行
但是目前这个代码还没有被很优化,因为我们程序中并没有做任何的cython typing,即cython类型定义
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)