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

Python处理器和迭代的多处理比率,python,multiprocessing,Python,Multiprocessing,这可能是个愚蠢的问题。但是,如果我有一个简单的函数,我想运行它100次,并且我有12个处理器可用,那么使用10个处理器来运行多处理代码还是12个处理器更好 基本上,通过使用12个内核,我可以节省一次迭代时间吗?或者它将在第一次运行10次迭代,然后是2次,然后是10次,依此类推?使用可用的处理器数量几乎总是更好的。然而,一些算法需要进程来传递部分结果,以实现最终结果。许多图像处理算法都有这一约束。这些算法对应该并行运行的进程数量有限制,因为超过这个限制,通信成本会影响性能 然而,这取决于很多事情。

这可能是个愚蠢的问题。但是,如果我有一个简单的函数,我想运行它100次,并且我有12个处理器可用,那么使用10个处理器来运行多处理代码还是12个处理器更好


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

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

然而,这取决于很多事情。许多算法很容易并行化,但是并行性的代价影响了它们的性能。基本上,为了使并行性具有任何价值,要完成的实际工作必须比并行性的成本高出一个数量级

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

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