gpt4 book ai didi

python - Cython 速度提升与可用性

转载 作者:IT老高 更新时间:2023-10-28 21:36:40 28 4
gpt4 key购买 nike

我刚刚遇到 Cython,当时我正在寻找优化 Python 代码的方法。我阅读了有关 Stack Overflow、python wiki 的各种帖子,并阅读了文章“优化的一般规则”。

Cython 是我最感兴趣的东西;您可以选择在自己的 python 代码中包含其他数据类型,而不是自己编写 C 代码。

这是我尝试过的一个愚蠢的测试,

#!/usr/bin/python
# test.pyx
def test(value):
for i in xrange(value):
i**2
if(i==1000000):
print i

test(10000001)

$ time python test.pyx

real    0m16.774s 
user 0m16.745s
sys 0m0.024s

$ time cython test.pyx

real    0m0.513s 
user 0m0.196s
sys 0m0.052s

现在,老实说,我傻眼了。我在这里使用的代码是纯python代码,我改变的只是解释器。在这种情况下,如果 cython 这么好,那为什么人们还用传统的 Python 解释器呢? Cython 是否存在任何可靠性问题?

最佳答案

其他答案已经解释了您是如何编译 Cython 代码,而不是执行它。但是,我认为您可能想知道 Cython 可以使您的代码多快。当我用 distutils 编译你的代码时(虽然我从不同的模块运行函数) ,与直接使用 Python 相比,我获得了非常小的速度提升——大约 1%。但是,当我对您的代码添加一些小改动时:

def test(long long value):
cdef long long i
cdef long long z
for i in xrange(value):
z = i**2
if(i==1000000):
print i
if z < i:
print "yes"

并编译它,我得到了以下时间:

  • 纯 Python 代码: 20.4553578737 秒
  • Cython 代码: 0.199339860234 秒

这是 100 倍的加速。不会太破旧。

关于python - Cython 速度提升与可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697275/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com