¿Hay algún equivalente en colecciones paralelas de scala en LINQ's withDegreeOfParallelism
que establezca el número de hilos que ejecutarán una consulta? Quiero ejecutar una operación en paralelo que necesita tener un número determinado de subprocesos en ejecución.colecciones paralelas de scala grado de paralelismo
Respuesta
Con el nuevo tronco, usando la JVM 1.6 o posterior, utilice el:
collection.parallel.ForkJoinTasks.defaultForkJoinPool.setParallelism(parlevel: Int)
Esto puede ser un tema a los cambios en el futuro, sin embargo. Se planea un enfoque más unificado para configurar todas las API paralelas de tareas de Scala para las próximas versiones.
Tenga en cuenta, sin embargo, que si bien esto determinará la cantidad de procesadores que utiliza la consulta, esta puede no ser la cantidad real de subprocesos involucrados al ejecutar una consulta. Como las colecciones paralelas admiten el paralelismo anidado, la implementación del grupo de subprocesos real puede asignar más subprocesos para ejecutar la consulta si detecta que es necesario.
EDIT:
partir de Scala 2,10, la forma preferida de ajustar el nivel de paralelismo es a través de la configuración del campo tasksupport
a un nuevo TaskSupport
objeto, como en el siguiente ejemplo:
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 = [email protected]
scala> pc map { _ + 1 }
res0: scala.collection.parallel.mutable.ParArray[Int] = ParArray(2, 3, 4)
Mientras instanciar el objeto ForkJoinTaskSupport
con un conjunto de unión de horquilla, el nivel de paralelismo del conjunto de unión de horquilla debe establecerse en el valor deseado (2
en el ejemplo).
Independientemente de la versión de la JVM, la Scala 2.9 + (introducido colecciones paralelas), también se puede utilizar una combinación de los grouped(Int)
y par
funciones para ejecutar trabajos paralelos en trozos pequeños, como este:
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)
grouped(2)
crea trozos de longitud 2 o menos, seq
asegura que la colección de trozos no es paralela (inútil en este ejemplo), entonces la función _ * 2
se ejecuta en los pequeños trozos paralelos (creados con par
), asegurando que como máximo 2 subprocesos se ejecuta en paralelo.
Sin embargo, esto podría ser un poco menos eficiente que establecer el parámetro del grupo de trabajadores, no estoy seguro de eso.
- 1. Scala interbloqueo con colecciones paralelas
- 2. Colecciones paralelas en Scala 2.9 y actores
- 3. ¿Qué operaciones en las colecciones paralelas de Scala están paralelizadas?
- 4. ¿Podemos especificar el grado de paralelismo de forma dinámica?
- 5. Incoherencias de Colecciones Scala
- 6. ¿Hay algo en Java cerca de las colecciones paralelas en Scala?
- 7. ¿Cuál es la forma preferida de usar las colecciones paralelas en Scala?
- 8. ¿Por qué las colecciones paralelas de Scala a veces causan un OutOfMemoryError?
- 9. scala 2.8 inconsistencia de colecciones?
- 10. Transformación de matrices en contexto con colecciones paralelas
- 11. ¿Cómo iterar más elegantemente a través de colecciones paralelas?
- 12. Transposición de colecciones arbitrarias de colecciones en Scala
- 13. Scala tareas paralelas únicamente en las declaraciones
- 14. Clases de casos de Scala en colecciones
- 15. ¿Por qué no es más rápido usando colecciones paralelas?
- 16. La deforestación en colecciones Scala
- 17. Java/Scala (profundidad) colecciones interoperabilidad
- 18. Iteraciones sobre colecciones de Java en Scala
- 19. Operando en las colecciones de Scala de manera genérica
- 20. Cómo usar colecciones mutables en Scala
- 21. Iteradores para colecciones mutables en Scala?
- 22. Actualizando las colecciones de Scala de forma segura
- 23. paralelismo de ForkJoinPool = 1 interbloqueo
- 24. jQuery Grado de la estrella
- 25. símbolo de grado en TextView
- 26. mutable vs. inmutable en las colecciones de Scala
- 27. Paralelismo en Python
- 28. Paralelismo en .Net
- 29. Paralelismo con SciPy.optimize
- 30. ¿Concurrencia no es paralelismo?
Soy escéptico de que esto realmente te gane algo. Tendría que ver que los números de referencia lo demostraran. –