基于IPython上sum()的执行时间差

2024-05-13 19:11:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用IPython的ipcluster引擎做一个简单的montecarlo模拟练习。我注意到,基于我定义函数的方式,执行时间有很大的不同,我正在问原因。具体情况如下:

当我将任务定义如下时,它很快:

def sample(n):
    return (rand(n)**2 + rand(n)**2 <= 1).sum()

并行运行时:

^{pr2}$

但如果我把函数改为:

def sample(n):
    return sum(rand(n)**2 + rand(n)**2 <= 1)

我得到:
3.141232 1个回路,最好每回路1:3.81 s

…慢了71倍。为什么会这样?在


Tags: sample函数引擎return定义defipython方式
1条回答
网友
1楼 · 发布于 2024-05-13 19:11:25

我不能太深入,但是它慢的原因是sum(<array>)是内置的cpythonsum函数,而您的<numpy array>.sum()使用的是numpysum函数,它比内置的python版本快得多。在

我想如果你用sum(<array>)替换numpy.sum(<array>),你会得到类似的结果

查看numpysum文档:http://docs.scipy.org/doc/numpy/reference/generated/numpy.sum.html

相关问题 更多 >