我正在使用scala并行集合。
t(apply(df, 1, function(x) rep(row(as.matrix(x)), x)))
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 3 3 4 5
#[2,] 3 4 4 4 4
#[3,] 1 2 4 4 4
它的速度非常快,但我觉得如果我们跑得太多,我可能会遇到内存不足的问题" largeComputation"并行。
因此,在测试时,我想知道并行集合使用了多少线程,如果需要,我如何配置并行集合的线程数。
答案 0 :(得分:2)
这是一段scaladoc,他们解释了如何更改任务支持并在其中包裹ForkJoinPool
。当您将ForkJoinPool
实例化为参数所需的并行度级别时:
Here is a way to change the task support of a parallel collection:
import scala.collection.parallel._
val pc = mutable.ParArray(1, 2, 3)
pc.tasksupport = new ForkJoinTaskSupport(new scala.concurrent.forkjoin.ForkJoinPool(2))
因此,对于您的情况,它将是
val largeList = list.par
largerList.tasksupport = new ForkJoinTaskSupport(
new scala.concurrent.forkjoin.ForkJoinPool(x)
)
largerList.map(x => largeComputation(x)).toList