令人尴尬的并行任务不够快

时间:2018-01-29 14:49:49

标签: python multiprocessing

我已经看到了其他相关的问题(例如this一个),但实际上没有一个问题回答我的问题,所以这里有:

我有一个非常令人难以置信的并行任务,我自己的GridSearch滚动版本。简单来说,我有一组参数,并希望在每个参数上评估我的模型。这些运行之间没有依赖关系,所以代码看起来像这样:

pool = multiprocessing.Pool(processes=4)
scores = pool.map(evaluator, permutations)

其中evaluator是一个函数,用于计算给定参数字母的分数,permutations是一个dictionaries的列表(在这种情况下长度为4)。

现在我的假设是使用4个进程(在8核机器上)应该给我4倍的加速(请注意,无论参数集如何,评估器都需要相同的时间,因此负载完全平衡)。 / p>

相反,我的时机产生了这些结果:

  1. 使用4个流程,每个评估需要82秒才能完成,因此总时间为84秒。

  2. 使用1个流程,每次评估需要43秒才能完成,因此总时间为170秒。

  3. 所以最后我使用4个核心获得了2倍的加速。当流程较少时,为什么每个流程都会更快?

0 个答案:

没有答案