Kar*_*rlo 1 parallel-processing scala sbt
我正在使用该par.map表达式在 Scala (SBT) 中并行执行进程。
考虑一下list.par.map(function(_))(我正在准备一份 MWE)。这意味着应该以并行方式function(_)应用于 的所有元素。list在我的示例中,list有 3 个元素。但 Scala 仅并行执行function(list(1)),function(list(2))并且仅在之后执行function(list(3))。
这种行为有原因吗?与程序在两核处理器上执行有关系吗?或者你如何强制并行执行这三件事?
小智 5
这个问题之前已经被问过:
并且有详细记录:
你想要的是这样的:
var parallelList = list.par
parallelList.tasksupport = new ForkJoinTaskSupport(
new scala.concurrent.forkjoin.ForkJoinPool(parlevel))
parallelList.map(function(_))
Run Code Online (Sandbox Code Playgroud)
也就是说,如果您在 2 核处理器上运行,则只有两个线程(当然,除非核心是超线程),这意味着您不能同时进行 2 个以上的并行操作。