scala implicit par 没有取得任何进展

scala implicit par makes no progress

这是我第一次尝试使用 Scala 的并行性。我有大量数据(可以存储为任何集合),我想使用简单的映射操作(例如 val out = data.par.map(foo(_))在多核系统上并行化这些数据。我在 scala docs 看到的示例有以下代码片段,输出很奇怪。 'serial' 版本似乎 运行 具有隐式并行性,并且并行版本不起作用。非常感谢任何指向解决方案的指示。

scala> val list = (1 to 1000000).toList
list: List[Int] = List(1, 2, 3, 4, 5,...   // used > 1000% cpu

scala> val out = list.map(_ + 42)          // again used > 1000% cpu
out: List[Int] = List(43, 44, 45, 46, 

scala> val out = list.par.map(_ + 42)      // process stalls, consumes no cpu!

scala> (1 to 10) map println               // initially used >400% cpu
1
2
3
4
5
6
7
8
9
10

scala> (1 to 10).par map println               // process stalls, consumes no cpu!

我正在使用 Scala 2.12.10 (OpenJDK 64-Bit Server VM, Java 1.8.0_275)

编辑:上面的代码 运行 在脚本中而不是在 scala shell 中。可能是 shell 本身的一些限制。

试试 -Yrepl-class-based

$ scala-runners/scala --scala-version 2.12.10 -Yrepl-class-based
Welcome to Scala 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 10.0.2).
Type in expressions for evaluation. Or try :help.

scala> (1 to 10).par map println
6
9
8
1
10
7
2
3
4
5
res0: scala.collection.parallel.immutable.ParSeq[Unit] = ParVector((), (), (), (), (), (), (), (), (), ())