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

2021-06-13 14:23:55 发布

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

我见过其他相关的问题(比如this一个),但没有一个能真正回答我的问题,所以这里是:

我有一个明显令人尴尬的并行任务要执行,我自己的GridSearch滚动版本。简单地说,我有一组参数,并希望对每一个参数评估我的模型。这些运行之间没有依赖关系,因此代码如下所示:

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

其中evaluator是一个计算给定参数的分数的函数,permutations是这样的dictionaries(在这种情况下长度为4)的列表。你知道吗

现在我的假设是,使用4个进程(在8核机器上)应该会使我的速度提高4倍(请注意,无论参数设置如何,求值器都会花费相同的时间,因此负载是完全平衡的)。你知道吗

相反,我的时间安排产生了这些结果:

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

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

所以最后我得到了2倍的加速使用4核。为什么在进程较少的情况下每个进程都会更快?你知道吗