前言
Python语言易用,开发效率高,适用范围广,这些优点是我们经常提起的,几乎做到了家喻户晓吧。但Python语言的性能也一直是大多数使用Python和没使用过Python的人一直诟病的。为什么没有使用过Python的人也诟病Python的性能呢,这就涉及到更深入的话题了,本篇不做深入。和我这样的能力不足的程序员不同是的是,一直有一些聪明人在享受这Python的便利的同时也没有放弃从各个方向优化Python的性能。其中Cython就是一个常用的方案,Cython可以做到像C一样的高性能,同时兼顾Python的简单易用。Cython通过一个Python/C API来完成两个语言之间的交流,以提供在计算密集型任务上对Python的良好性能支持,这里要注意的是只在计算密集型任务上适应这样的解决方案,大部分应用不需要这么做,反而会适得其反。
原生Python
上节说到只有那些计算密集型任务才考虑做性能优化,没有充分的理由不要过早做性能优化,要知道过早的优化是万恶之源。所以我们的例子也是举一个计算密集型示例。计算一定范围内那些数字是素数是一个典型的计算密集型任务。我们这次就用这个作为示例做演示。首先是Python语言实现部分:
from math import sqrt
def primes(n):
results = [1,]
for i in range(2, n):
for j in range(2, int(sqrt(i))):
if i % j == 0:
break
else:
results.append(i)
return