我了解如何通过可变的tasksupport
字段(参见https://stackoverflow.com/a/5425354/82970)为单个并行集合设置并行度。
How can I set the parallelism level for all new parallel collections in Scala 2.10?
一个辅助问题---与并行集合关联的
tasksupport
是否由其基础上构建的新并行集合“继承”? (例如,使用take
,map
等)
最佳答案
scala.concurrent.context.minThreads
:Int,最小并行度scala.concurrent.context.numThreads
:一个Int,以指定要直接使用的并行度;或者一个String:一个“x”,后跟一个Double(例如,“x1.5”),然后与Runtime.getRuntime.availableProcessors
scala.concurrent.context.maxThreads
:Int,最大并行度相关的源文件(如果我正确执行了所有操作)似乎是ExecutionContextImpl。
诸如
map
,filter
等的转换操作应保留在原始集合上设置的任务支持。至少消息来源是这样的。 :)大多数并行操作都在ParIterableLike中定义,它们要么在Combiner中调用
resultWithTaskSupport
(通过工厂在ParIterableLike的568行或581行中获取原始任务支持集),要么直接在结果集合上设置任务支持。 关于scala - 在Scala 2.10中为所有集合设置并行度级别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207762/