擅长:python、mysql、java
<p>如果您需要进行大量的数值计算,那么<a href="https://docs.scipy.org/doc/numpy/" rel="nofollow noreferrer">^{<cd1>}</a>通常是一个不错的选择。Numpy可以处理较低级别的数据类型(例如固定宽度的整数python的是无界的)。这会给你一种暗示你感兴趣的类型。由于numpy设计用于处理具有已知类型的数组中的大量数据,因此它可以在整个数组上高效地执行相同的操作。这也允许numpy与那些<a href="https://en.wikipedia.org/wiki/SIMD" rel="nofollow noreferrer">SIMD</a>指令的CPU很好地工作(我不知道没有SIMD的现代CPU)。在</p>
<p>我通常会这样重写您的函数:</p>
<pre><code>import math
import numpy
def baselpi_numpy(n):
i = numpy.arange(1, n) # array of 1..n
baselsum = (1 / (i * i)).sum()
return math.sqrt(6 * baselsum)
</code></pre>
<p>但是,对于大的<code>n</code>,您将没有足够的内存。您需要添加一些额外的代码来批处理操作。即:</p>
^{pr2}$
<p>我5.2秒后在我的笔记本上得到结果。虽然我没有测试您使用的<code>n</code>的值,但是对于较低的<code>n</code>来说,numpy版本的速度要快20倍以上。在</p>