博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python cython 模块(2)
阅读量:7052 次
发布时间:2019-06-28

本文共 1271 字,大约阅读时间需要 4 分钟。

cython 的主要用途是加速python 代码的执行速度,手段有很多种,最简单的一种就是将变量声明成静态类型:

比如用python 代码写的计算素数的函数,最大计算1000个:

def primes(kmax):    p  = range(1000)    res = []    if kmax > 1000:           kmax = 1000    k, n = 0, 2    while k < kmax:           i = 0           while i < k and n % p[i] != 0:            i += 1           if i == k:            p[k] = n            k += 1            res.append(n)           n += 1    return res

用cython 写的计算素数的函数:

def primes(int kmax):    cdef int p[1000]    cdef int k = 0    cdef int n = 2    cdef int i = 0    res = []    if kmax > 1000:           kmax = 1000    while k < kmax:           i = 0           while i < k and n % p[i] != 0:            i += 1           if i == k:            p[k] = n            k += 1            res.append(n)           n += 1    return res

这两个函数实现了相同的功能, 不同的是cython 中将一些变量声明成了静态类型,

现在比较这两个函数的运行速度,先计算python 函数的 运行时间 test.py:

import timeimport primesstart = time.time()a     = primes.primes(1000)end   = time.time()print "{}".format(end - start)

运行python test.py , 结果为 0.251568078995

在计算cython 函数的运行时间 test_cython.py:

import timeimport cython_primes as primesstart = time.time()a     = primes.primes(1000)end   = time.time()print "{}".format(end - start)

运行python test_cython.py , 结果为 0.0071849822998

可以看出速度快了30多倍, 只是声明静态变量就提高了许多。

 

转载地址:http://ozpol.baihongyu.com/

你可能感兴趣的文章
掘金广告产品介绍
查看>>
九宫格
查看>>
手把手教你写一个 VSCode 插件
查看>>
cookie和session
查看>>
使用 multipart/x-mixed-replace 实现 http 实时视频流
查看>>
史上最牛内推小组(持续更新)
查看>>
现实中的路由规则,可能比你想象中复杂的多
查看>>
nginx配置gzip中的坑
查看>>
Javascript中的函数声明与函数表达式
查看>>
Python学习笔记 - queue
查看>>
茶器漫谈 高逼格 or 真内涵?
查看>>
HTML5学习之Web Storage基础知识
查看>>
tab切换
查看>>
垃圾回收及内存调试工具的介绍
查看>>
你的接口,真的能承受高并发吗?
查看>>
自定义View实用小技巧
查看>>
iOS CALayer anchorPoint 的应用场景
查看>>
如何變聰明?訓練自己變成結構化思維型的人!- TechMoon 科技月球
查看>>
超好用的VueJs调试工具——vue-devtools
查看>>
到底怎么才算“懂”python的twisted框架?
查看>>