如何在Scala中使用.par控制并行进程的数量?

时间:2016-11-11 01:30:06

标签: scala parallel-processing sbt

我使用par.map表达式在Scala(SBT)中并行执行进程。

考虑list.par.map(function(_))(我正在准备MWE)。这意味着function(_)应以并行方式应用于list的所有元素。在我的示例中,list有3个元素。但Scala并行执行function(list(1))function(list(2)),之后只执行function(list(3))

这种行为有原因吗?程序是在双核处理器上执行的吗?或者你怎么能强制并行执行所有这三件事?

1 个答案:

答案 0 :(得分:1)

之前已经问过这个问题:

并且有详细记录:

你想要的是:

var parallelList = list.par
parallelList.tasksupport = new ForkJoinTaskSupport(
     new scala.concurrent.forkjoin.ForkJoinPool(parlevel))
parallelList.map(function(_))

如果您在2核心处理器上运行,那么您只有两个线程(当然除非核心是超线程的),这意味着您不能同时进行多于2个并行操作。