使用cython库对python代码进行动态编译达到加速效果

Posted wuzaipei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用cython库对python代码进行动态编译达到加速效果相关的知识,希望对你有一定的参考价值。

1、测试代码:新建  fib.pyx

# coding:utf-8
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans

def km():
    return KMeans(n_clusters=4)

def fib(n):
    if n<2:
        return 1
    else:
        return fib(n-1)+fib(n-2)

def plots():
    x  = np.linspace(-2,2,30)
    y = np.sin(x)
    plt.plot(x,y)
    plt.show()

2、新建  fib_setup.py

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("myfib", ["fib.pyx"])]
)

3、在当前文件下打开cmd执行:

python fib_setup.py build_ext --inplace

4、新建  test.py

# coding=utf-8
# 把python代码编译成动态文件
# python fib_setup.py build_ext --inplace

import myfib
import time

t = time.time()
myfib.fib(37)
print(time.time() - t)

print(myfib.km())

测试成功搞定,这种方法可以提高python一大截计算速度。还可以吧

 

 



以上是关于使用cython库对python代码进行动态编译达到加速效果的主要内容,如果未能解决你的问题,请参考以下文章

在 mac 上使用 cython 和 emscripten 将简单的 python 程序编译为 javascript

分发 Cython 生成的 cpp 文件

Cython 是用于构建 C 代码还是用于构建 Python 扩展?

关于pyx文件的修改

cython和python的区别

Cython保护python代码