Pycharm 设置Cython编译工具

0.前言

Cython作为一种能够将python和c/c++混编的语言,可以极大的加速python代码,但是pyx文件写起来和编译都不是很方便。下面讲一下解决的办法。

1.编辑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))

2.终端编译pyx文件

编译pyx文件,其实可以直接在终端输入命令

python setup.py build_ext --inplace

但是我们在pycharm里面编辑好了,又跑到终端输命令感觉很违和,下面讲在pycharm里面设置实现快捷编译

3.pycharm external tool设置

在pycharm中一次打开’File’ -> ‘settings’ -> ‘Tools’ -> ‘External Tools’。
点击添加新的tools,按照下面这样设置:
1. program选择python可执行文件路径
2. Arguments选择FilePath宏,添加编译选项
3. 工作区选择FileDir,即当前目录

确定之后,点击pycharm中菜单栏的’Tools’ -> ‘External tool’即可找到刚才新建的tool,点击即可编译。
当然为了避免每次编译pyx文件的时候都点击的话,可以直接设置该tool的快捷键。

你可能感兴趣的:(python)