我见过其他相关的问题(比如this一个),但没有一个能真正回答我的问题,所以这里是:
我有一个明显令人尴尬的并行任务要执行,我自己的GridSearch滚动版本。简单地说,我有一组参数,并希望对每一个参数评估我的模型。这些运行之间没有依赖关系,因此代码如下所示:
pool = multiprocessing.Pool(processes=4)
scores = pool.map(evaluator, permutations)
其中evaluator
是一个计算给定参数的分数的函数,permutations
是这样的dictionaries
(在这种情况下长度为4)的列表。你知道吗
现在我的假设是,使用4个进程(在8核机器上)应该会使我的速度提高4倍(请注意,无论参数设置如何,求值器都会花费相同的时间,因此负载是完全平衡的)。你知道吗
相反,我的时间安排产生了这些结果:
使用4个进程,每次评估需要82秒才能完成,因此总时间为84秒。
使用1个进程,每次评估需要43秒才能完成,因此总时间为170秒。
所以最后我得到了2倍的加速使用4核。为什么在进程较少的情况下每个进程都会更快?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐