如何 运行 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))
如何运行并行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))