我使用par.map
表达式在Scala(SBT)中并行执行进程。
考虑list.par.map(function(_))
(我正在准备MWE)。这意味着function(_)
应以并行方式应用于list
的所有元素。在我的示例中,list
有3个元素。但Scala并行执行function(list(1))
和function(list(2))
,之后只执行function(list(3))
。
这种行为有原因吗?程序是在双核处理器上执行的吗?或者你怎么能强制并行执行所有这三件事?
答案 0 :(得分:1)
之前已经问过这个问题:
并且有详细记录:
你想要的是:
var parallelList = list.par
parallelList.tasksupport = new ForkJoinTaskSupport(
new scala.concurrent.forkjoin.ForkJoinPool(parlevel))
parallelList.map(function(_))
如果您在2核心处理器上运行,那么您只有两个线程(当然除非核心是超线程的),这意味着您不能同时进行多于2个并行操作。