有没有办法估计循环本身的Python解释器开销?

有没有办法估计循环本身的Python解释器开销?,python,parallel-processing,Python,Parallel Processing,这是说 如果循环的主体很简单,那么循环本身的解释器开销可能是相当大的开销 并给出了这个例子来说明并行性 def convolve_random(size): ''' Convolve two random arrays of length "size" ''' return np.convolve(np.random.random_sample(size), np.random.random_sample(size)) %timeit convolve_random(40000)

这是说

如果循环的主体很简单,那么循环本身的解释器开销可能是相当大的开销

并给出了这个例子来说明并行性

def convolve_random(size):
    ''' Convolve two random arrays of length "size" '''
    return np.convolve(np.random.random_sample(size), np.random.random_sample(size))
%timeit convolve_random(40000)
1 loops, best of 3: 904 ms per loop

%timeit [convolve_random(40000 + i*1000) for i in xrange(8)]
# In parallel, with 8 jobs
%timeit Parallel(n_jobs=8)(delayed(convolve_random)(40000 + i*1000) for i in xrange(8))
1 loops, best of 3: 8.69 s per loop
1 loops, best of 3: 2.88 s per loop
在这种情况下,有没有办法估计循环本身的Python解释器开销

Q:有没有办法估计循环本身的Python解释器开销

您已经收到了使用
[us]
-解析计时进行基准测试模板的说明


如果您没有尝试测试来测量它,那么继续测试,您将收到硬数据什么是循环成本(最好使用超缓存大小的数据样本+避免
np.random.random()
generation的成本).

您可以尝试使用空正文对循环计时。这些链接都指向同一个位置,并且不包含该引用。也就是说,python每次循环迭代应该需要几纳秒的时间。这比你的计算要小很多数量级function@SamMason谢谢提醒。我已经更新了OP。你的“数量级”是不是意味着
数量级是一个数字在常用的十进制中的位数的近似度量。它等于对数的整数(以10为底)。例如,1500的数量级是3,因为1500=1.5×103。< /代码>?@ WHNLP只是考虑到不同的是,它使得所有实际考虑的开销都是可忽略的。如果您需要担心这个开销,那么解决方案很可能是切换到普通C——这是像NUMPY这样的库正在做的。这就是为什么它们比普通python循环快得多。是的,在这种情况下,您担心的开销(解释器开销)比您关心的事情(函数的运行时)大约小6个数量级(即一百万倍)。OP的传统意思是“原始海报”,即最初发布问题的人。哇,你最后的答案很全面@whnlp的30.9秒是“浪费”的评论基本上是这个问题的延续。作为一个粗略的指导,我建议在每个并行作业中完成>10ms的工作,并确保不要移动太多数据,因为这可能会很昂贵[T0]、[T0+tsB]和[T0+tsB+tpB]的意思是什么?“tsB”、“tpB”代表什么?@whnlp在图1中,[T0]是一个时间,当序列a或序列B纯-[串行]处理开始时。标记为序列a的流程(a)在[T0+tsA](在tsA持续时间=串行处理时间-a[s]之后)完成整个作业。流程(B)分别由串行部分和并行部分组成,标记为序列B。PA.B:,在[T0+TSB+TPB ]完成整个工作,在TSB的持续时间=时间序列处理B [S] +持续时间TPB =时间并行处理B [S],基于n~(1)2×4×8 }资源R.I?自由和不可分割的原子工作时间“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。”谢谢你的回答!“PAR-RESOURCE”是指可用于并行计算的资源,如处理器核心、多线程或计算机集群吗?哪一个?或者他们中的任何一个?