使用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一大截计算速度。还可以吧



原文地址:https://www.cnblogs.com/wuzaipei/p/11144827.html

时间: 2024-08-03 03:42:14

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

1行Python代码制作动态二维码

原文地址 https://blog.csdn.net/m0_38106923/article/details/100603516 GitHub网站参见:https://github.com/sylnsfar/qrcode 原文地址:https://www.cnblogs.com/php-linux/p/11843357.html

python代码风格指南:pep8 中文版

本文档所提供的编码规范,适用于主要的Python发行版中组成标准库的Python代码.请参阅PEP关于Python的C实现的C编码风格指南的描述. 本文档和PEP257(文档字符串规范)改编自Guido的<Python Style Guide>一文,并从<Barry's style guide>添加了部分内容作为补充. 这篇风格指南随着时间的推移而逐渐演变,随着语言本身的变化,一些过去的约定已经过时,并确定了更多新的约定. 许多项目都有自己的编码风格指南.如果有任何冲突,优先使用该

浅谈VB.Net 程序的编译和动态编译

---恢复内容开始--- 一般,我们都是通过Visual Studio(下面简称vs)来编写和编译vb.net应用程序的,但是,不少的人并不知道vs是通过何种方式编译程序的.今天,我们就来探讨一下编译vb.net程序的真正原理. 这篇随笔包含如下几个部分: 1.VS是怎么编译的 2.通过vbc.exe来编译应用程序 3.在代码中通过VBCodeProvider动态编译应用程序 ok,首先来说说vs编译应用程序的方法.其实,vs是通过调用vbc.exe来编译vbnet应用程序的.vs把用户编写的代

让C#语言充当自身脚本!——.NET中的动态编译

原文:让C#语言充当自身脚本!--.NET中的动态编译 代码的动态编译并执行是.NET平台提供给我们的很强大的一个工具,用以灵活扩展(当然是面对内部开发人员)复杂而无法估算的逻辑,并通过一些额外的代码来扩展我们已有 的应用程序.这在很大程度上给我们提供了另外一种扩展的方式(当然这并不能算是严格意义上的扩展,但至少为我们提供了一种思路). 动态代码执行可以应用在诸如模板生成,外加逻辑扩展等一些场合.一个简单的例子,为了网站那的响应速度,HTML静态页面往往是我们最好的选择,但基于数据驱动的网站往往

Java_动态编译总结

不多说直接上代码: 动态编译的主类: package com.lkb.autoCode.util; import com.lkb.autoCode.constant.AutoCodeConstant; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.tools.*; import java.io.File; import java.io.FileFi

Python学习教程:用Cython加速Python代码,快到你想不到

如果你曾经用Python编写过代码,那么等待某些代码块执行的时间可能比您希望的要长.虽然有一些方法可以提高代码的效率,但它很可能仍然比C代码慢.这主要归结为一个事实:Python是一种动态编程语言,它将许多东西移动到C在编译期间负责的运行时. 不过,如果您像我一样喜欢用Python编写代码,并且仍然希望加快代码的速度,那么您可以考虑使用Cython.虽然Cython本身是一种独立的编程语言,但是很容易将其融入到您的工作流程中,例如Jupyter Notebook.在执行时,Cython将您的Py

python 解析html基础 HTMLParser库,方法,及代码实例

HTMLParser, a simple lib as html/xhtml parser 官方解释: This module defines a class HTMLParser which serves as the basis for parsing text files formatted in HTML (HyperText Mark-up Language) and XHTML.Unlike the parser in htmllib, this parser is not base

Linux下c函数dlopen实现加载动态库so文件代码举例

dlopen()是一个强大的库函数.该函数将打开一个新库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.这种机制使得在系统中添加或者删除一个模块时,都不需要重新编译了.可以在自己的程序中使用 dlopen().dlopen() 在 dlfcn.h 中定义,并在 dl 库中实现.它需要两个参数:一个文件名和一个标志.文件名就是一个动态库so文件,标志指明是否立刻计算库的依赖性.如果设置为 RTLD_NOW 的话,则立刻计算:如果设置的是 RTLD_LAZY,则在需要

python 调用 C 动态库

首先是 C 的头文件和源文件, #ifndef POINT_H #define POINT_H struct point { int x; int y; }; void point_print(struct point * p); #endif /* POINT_H */ #include <stdio.h> #include "point.h" void point_print(struct point * p) { printf("x = %d, y = %d