如何 运行 Parallel Scala 中的不同函数

How to Run Different Functions in Parallel Scala

如何运行并行returns不同数据类型的两个不同函数?

这里有 fruitFutures 和 primeFutures。如何使用 Await.result 功能?

val fruits = List("apple", "orange", "mango", "banana")
val primeNums = List(2,3,5,7,11)

def executeFruit(fruit: String): Try[String] = {
  Try {
   s"executed $fruit"
  }
}

def executePrime(prime: Int): Try[Int] = {
  Try {
    prime * 2
  }
}

val fruitFutures: List[Future[Try[String]]] = for {
     fruit <- fruits
   } yield {
     Future {
      executeFruit(fruit)
     }
   }

val primeFutures: List[Future[Try[Int]]] = for {
     prime <- primeNums
   } yield {
     Future {
      executePrime(prime)
     }
   }

val futureResults = Await.result(Future.sequence(???), Duration.Inf)

你可以试试这个:

    val futureResults = for {
      f <- Future.sequence(fruitFutures)
      p <- Future.sequence(primeFutures)
    } yield (f, p)
    val (fruitResult, primeResult) =
      Await.result(futureResults, Duration.Inf)

这将导致:

List(Success(executed apple), Success(executed orange), Success(executed mango), Success(executed banana))
List(Success(4), Success(6), Success(10), Success(14), Success(22))