Cython作为一种能够将python和c/c++混编的语言,可以极大的加速python代码,但是pyx文件写起来和编译都不是很方便。下面讲一下解决的办法。
其实用文本编辑器就可以编辑pyx文件,但是使用pycharm专业版可以实现常见的语法高亮和自动补全等功能,因此建议使用pycharm专业版。
以cython官网上的代码为例,下面表示编辑好的pyx文件,编译所需要的setup.py文件以及测试文件test_runtime.py
#integ.pyx
cdef double f(double x):
return x ** 2 - x
def integrate_f(double a, double b, int N):
cdef int i
cdef double s, dx
s = 0
dx = (b - a) / N
for i in range(N):
s += f(a + i * dx)
return s * dx
# setup.py
from distutils.core import setup
from Cython.Build import cythonize
setup(
name='integrate',
ext_modules=cythonize('integ.pyx')
)
# test_runtime.py
from __future__ import print_function
from integ import integrate_f
import time
f = lambda x: x**2-x
def py_inte(a, b, N):
s = 0
dx = (b-a) / N
for i in range(N):
s += f(a + i * dx)
return s * dx
if __name__ == '__main__':
start = time.clock()
for k in xrange(1000):
py_inte(-10, 10, 1000)
print('pure python takes {}'.format(time.clock() - start))
start = time.clock()
for k in xrange(1000):
integrate_f(-10, 10, 1000)
print('cython takes {}'.format(time.clock() - start))
编译pyx文件,其实可以直接在终端输入命令
python setup.py build_ext --inplace
但是我们在pycharm里面编辑好了,又跑到终端输命令感觉很违和,下面讲在pycharm里面设置实现快捷编译
在pycharm中一次打开’File’ -> ‘settings’ -> ‘Tools’ -> ‘External Tools’。
点击添加新的tools,按照下面这样设置:
1. program选择python可执行文件路径
2. Arguments选择FilePath宏,添加编译选项
3. 工作区选择FileDir,即当前目录
确定之后,点击pycharm中菜单栏的’Tools’ -> ‘External tool’即可找到刚才新建的tool,点击即可编译。
当然为了避免每次编译pyx文件的时候都点击的话,可以直接设置该tool的快捷键。