2
我正在使用IPython的IPcluster引擎进行简单的蒙特卡罗模拟练习。基于我如何定义函数,我注意到执行时间的巨大差异,我正在问这个原因。下面是详细信息:基于IPython上的sum()的执行时间差异
当我definde任务如下,它是快速:
def sample(n):
return (rand(n)**2 + rand(n)**2 <= 1).sum()
当并行运行:
from IPython.parallel import Client
rc = Client()
v = rc[:]
with v.sync_imports():
from numpy.random import rand
n = 1000000
timeit -r 1 -n 1 print 4.* sum(v.map_sync(sample, [n]*len(v)))/(n*len(v))
3.141712
1 loops, best of 1: 53.4 ms per loop
但是,如果我改变的功能:
def sample(n):
return sum(rand(n)**2 + rand(n)**2 <= 1)
我得到:
3.141232 1 l哎呀,最好的1:3.81秒每回路
...这是71时间慢。这可能是什么原因?
感谢@Cameron SPARR –