scala - sirve - ¿Operaciones paralelas de mapas?
map en html (2)
Si agrega par
, obtendrá una colección paralela y las operaciones se procesarán en paralelo. Para volver a convertir a una colección normal, llame a una toList
.
Entonces tu código se vería así:
a.par.map(tup => tup._1 + tup._2).toList
O un .seq
para obtener una colección secuencial (lo opuesto a una colección paralela).
a.par.map(tup => tup._1 + tup._2).seq
¿Scala proporciona una forma de ejecutar operaciones de mapas paralelos como parte del lenguaje estándar?
Por ejemplo, dado:
scala> val a = List((1,2), (3,4), (3,6))
a: List[(Int, Int)] = List((1,2), (3,4), (3,6))
Puedo hacer:
scala> a.map(tup => tup._1 + tup._2)
res0: List[Int] = List(3, 7, 9)
Sin embargo, según mi conocimiento, esto asigna la función proporcionada sobre los objetos de la lista de forma secuencial. ¿Existe una forma integrada de aplicar la función a cada elemento en un subproceso separado (o equivalente), y los resultados se reúnen en una lista resultante?
par
divide su lista para procesar en varios subprocesos. Luego, puede regular la forma en que se realiza el subproceso modificando el miembro de soporte de tareas del tasksupport
resultante.