scala - 在Scala 2.10中为所有集合设置并行度级别吗?

标签 scala parallel-processing scala-2.10

我了解如何通过可变的tasksupport字段(参见https://stackoverflow.com/a/5425354/82970)为单个并行集合设置并行度。

How can I set the parallelism level for all new parallel collections in Scala 2.10?



一个辅助问题---与并行集合关联的tasksupport是否由其基础上构建的新并行集合“继承”? (例如,使用takemap等)

最佳答案

  • 我简要地看了看源代码,如果我对它们的理解正确,那么可以使用三个系统属性来配置默认执行上下文,这似乎可以用作默认任务支持。这些决定了任务支持对象的并行度。
  • scala.concurrent.context.minThreads:Int,最小并行度
  • scala.concurrent.context.numThreads:一个Int,以指定要直接使用的并行度;或者一个String:一个“x”,后跟一个Double(例如,“x1.5”),然后与Runtime.getRuntime.availableProcessors
  • 相乘
  • scala.concurrent.context.maxThreads:Int,最大并行度

  • 相关的源文件(如果我正确执行了所有操作)似乎是ExecutionContextImpl
  • 至于问题的第二部分:
    诸如mapfilter等的转换操作应保留在原始集合上设置的任务支持。至少消息来源是这样的。 :)
    大多数并行操作都在ParIterableLike中定义,它们要么在Combiner中调用resultWithTaskSupport(通过工厂在ParIterableLike的568行或581行中获取原始任务支持集),要么直接在结果集合上设置任务支持。
  • 关于scala - 在Scala 2.10中为所有集合设置并行度级别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207762/

    相关文章:

    javascript - Node.js 与 Napajs 的并行任务

    Scala 协方差与下界

    scala - 在 Scala 的 split() 方法中使用单引号和双引号有什么区别?

    Python 多处理负载均衡器

    Matlab代码性能计算。如何在 PC 上禁用多核以评估代码性能

    Scala 2.10 反射 : Creating an Array from a type

    名为 x 的 Scala 动态字段

    scala - 如何从TypeTag或同时获取ClassTag的ClassTag?

    java - spark checkpoint ".bk"和 ".crc"文件的功能是什么?

    scala - SBT 是否支持循环依赖?