处理器和迭代的Python多处理比率

时间:2017-05-19 16:25:08

标签: python multiprocessing

这可能是一个愚蠢的问题。但是,如果我有一个简单的功能,我想运行它100次,我有12个处理器可用,使用10个处理器运行多处理代码或12个更好吗?

基本上通过使用12个核心,我将节省一个迭代时间吗?或者它将在第一次运行10次迭代,然后是2次然后再运行10次,依此类推?

1 个答案:

答案 0 :(得分:1)

使用可用的处理器数量几乎总是更好。然而,一些算法需要进程来传递部分结果以实现最终结果(许多图像处理算法具有这种约束)。这些算法对应该并行运行的进程数量有限制,超出此限制,通信成本会损害性能。

然而,这取决于很多事情。许多算法很容易并行化,但并行性成本会损害acceleration。基本上,对于并行性是值得的,要完成的实际工作必须比并行性成本高出一个数量级。

在典型的多线程语言中,您可以通过重用相同的线程(线程池)轻松降低并行性的成本。但是,python是python,你必须使用多处理来实现真正的并行性,这具有巨大的成本。但是,如果您希望重复使用流程,则会有一个流程池。

您需要检查顺序运行算法所需的时间,运行一次迭代所需的时间以及您将拥有多少次迭代。只有这样你才能知道并行化是否值得。如果它是值得的,那么测试从1到100的进程数。这将允许您找到算法的最佳位置。