gpt4 book ai didi

scala 隐式 par 没有任何进展

转载 作者:行者123 更新时间:2023-12-03 23:38:37 28 4
gpt4 key购买 nike

这是我第一次尝试使用 Scala 的并行性。我有大量数据(可以存储为任何集合),我想使用简单的映射操作(例如 val out = data.par.map(foo(_) )在多核系统上并行化这些数据。我在 scala docs 看到的例子有以下片段给出了奇怪的输出。 “串行”版本似乎以隐式并行运行,而并行版本不起作用。任何指向解决方案的指针将不胜感激。

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((), (), (), (), (), (), (), (), (), ())

关于scala 隐式 par 没有任何进展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67591758/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com