在jupyter编译减少黄色区域后,从最底层函数(没有调用其他函数)开始,一个一个粘贴进pyx文件生成pyd来调用,即从最底层函数开始嵌入
Cython官方文档:http://docs.cython.org/en/latest/index.html
安装:pip install cython
下面第3步是在cmd命令行执行(要到pyx文件路径下)
mly个人总结:当然不能直接把py文件改为pyx,然后写个setup.py生成pyd就以为能加速了,还要用cython的语法
===============================
cimport 是 Cython 中用来引入 .pxd 文件的命令
Cython 的函数使用 cdef 定义,并且他可以给所有参数以及返回值指定类型
在函数体内部,我们一样可以使用cdef typename varname 这样的语法来声明变量
在 Python 程序中,是看不到cdef的函数的,所以我们这里def naive_dot(a, b) 来调用 cdef过的 _naive_dot 函数。
如果我们把刚刚 Cython 代码中的类型标注都去掉(也就是函数参数和返回值类型以及函数体内部的cdef可以看到,这下 Cython 实现几乎和 Python 实现一样慢了。所以说,在 Cython 中,类型标注对于提升速度是至关重要的。
===========================
http://blog.csdn.net/ztf312/article/details/74998300
1、定义c数据类型
2、用c标准库替代Python模块
cdef extern from "math.h":
np.float64_t exp(np.float64_t)
np.float64_t sqrt(np.float64_t)
np.float64_t fabs(np.float64_t)
np.float64_t pow(np.float64_t x,np.float64_t y)
=======================
3.1 Cython里同样支持Python里的for-in-range形式的for循环
3.2 出于性能的考虑,Cython对for循环作了优化,如for i in range(n),如果i是一个预先通过cdef定义的变量,那么Cython会将这样的for循环转成C代码,举个例子:
cdef int i
for i in range(0,10,2):
printf("%d\n",i)