복붙노트

[SCALA] 병렬 스칼라 평행 모음 정도

SCALA

병렬 스칼라 평행 모음 정도

쿼리를 실행 스레드의 수를 설정 LINQ의 withDegreeOfParallelism에 스칼라 병렬 컬렉션 동등한이 있습니까? 나는 실행 스레드의 일련 번호를 가질 필요가 병렬로 작업을 실행하려는.

해결법

  1. ==============================

    1.JVM이 1.6 이상을 사용하여 최신 트렁크, 함께,을 사용합니다 :

    JVM이 1.6 이상을 사용하여 최신 트렁크, 함께,을 사용합니다 :

    collection.parallel.ForkJoinTasks.defaultForkJoinPool.setParallelism(parlevel: Int)
    

    하지만 이것은 미래의 변화에 ​​대상이 될 수 있습니다. 모든 스칼라 작업 병렬 API를 구성하는 것보다 통합 된 접근 방식은 향후 출시 될 예정이다.

    참고 그러나,이 프로세서 쿼리 분류기의 수를 결정하는 반면,이되지 않을 수 스레드의 실제 수는 쿼리를 실행에 참여. 병렬 컬렉션이 중첩 된 병렬 처리를 지원하기 때문에 그것이이 필요하다 발견 한 경우, 실제 스레드 풀 구현은 쿼리를 실행하기 위해 더 많은 스레드를 할당 할 수 있습니다.

    편집하다:

    스칼라 2.10에서 시작하여, 병렬 처리 수준을 설정하는 선호하는 방법은 다음 예에서와 같이, 새로운 TaskSupport 객체에 tasksupport 필드를 설정하는 과정입니다 :

    scala> import scala.collection.parallel._
    import scala.collection.parallel._
    
    scala> val pc = mutable.ParArray(1, 2, 3)
    pc: scala.collection.parallel.mutable.ParArray[Int] = ParArray(1, 2, 3)
    
    scala> pc.tasksupport = new ForkJoinTaskSupport(new scala.concurrent.forkjoin.ForkJoinPool(2))
    pc.tasksupport: scala.collection.parallel.TaskSupport = scala.collection.parallel.ForkJoinTaskSupport@4a5d484a
    
    scala> pc map { _ + 1 }
    res0: scala.collection.parallel.mutable.ParArray[Int] = ParArray(2, 3, 4)
    

    포크와 ForkJoinTaskSupport 객체를 인스턴스화 풀 가입 동안 포크의 병렬 레벨은 풀 요구 값 (이 예에서는 2)로 설정해야 조인.

  2. ==============================

    2.독립적으로 스칼라 2.9+ (도입 병렬 컬렉션)와 JVM 버전, 당신은이 같은 작은 덩어리에 병렬 작업을 실행하기 위해 (INT) 그룹화 파 기능의 조합을 사용할 수 있습니다 :

    독립적으로 스칼라 2.9+ (도입 병렬 컬렉션)와 JVM 버전, 당신은이 같은 작은 덩어리에 병렬 작업을 실행하기 위해 (INT) 그룹화 파 기능의 조합을 사용할 수 있습니다 :

    scala> val c = 1 to 5
    c: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)
    
    scala> c.grouped(2).seq.flatMap(_.par.map(_ * 2)).toList
    res11: List[Int] = List(2, 4, 6, 8, 10)
    

    그룹화 (2) 따라서 보장 길이 2 이하, 배열은 반드시 청크의 집합 (이 예에서는 쓸모) 평행하지하게 다음 _ * (2) 함수가 작은 평행 청크 실행된다 (PAR로 작성된)의 덩어리를 만들고 가장 2 개 실에서 병렬로 실행된다.

    이것은 그러나 약간 덜 효율적인 작업자 풀 매개 변수를 설정하는 것보다 수 있습니다, 나는 확실하지 그것에 대해 해요.

  3. from https://stackoverflow.com/questions/5424496/scala-parallel-collections-degree-of-parallelism by cc-by-sa and MIT license