Estoy haciendo algunas pruebas de rendimiento con clojure usando pmap y me gustaría poder controlar el número de subprocesos que se utilizan con pmap. Sé que al usar algo como OpenMP uno puede establecer el número de subprocesos usando omp_set_num_threads(). Me preguntaba si habría algo similar en Clojure.¿Hay alguna manera de controlar la cantidad de subprocesos usados con pmap?
6
A
Respuesta
7
Aquí es código para pmap
:
(defn pmap
"Like map, except f is applied in parallel. Semi-lazy in that the
parallel computation stays ahead of the consumption, but doesn't
realize the entire result unless required. Only useful for
computationally intensive functions where the time of f dominates
the coordination overhead."
([f coll]
(let [n (+ 2 (.. Runtime getRuntime availableProcessors))
rets (map #(future (f %)) coll)
step (fn step [[x & xs :as vs] fs]
(lazy-seq
(if-let [s (seq fs)]
(cons (deref x) (step xs (rest s)))
(map deref vs))))]
(step rets (drop n rets))))
Como se puede ver, pmap
toma todos los procesadores disponibles y los utiliza de forma cíclica. Por lo tanto, no, no hay forma de establecer el número de subprocesos ... pero siempre puede escribir su propio pmap
, que proporcionará dicha funcionalidad.
Cuestiones relacionadas
- 1. ¿Hay alguna manera de controlar Apache con New Relic?
- 2. ¿Hay alguna manera de detectar de manera confiable la cantidad total de núcleos de CPU?
- 3. ¿Hay alguna forma de determinar la cantidad ideal de hilos?
- 4. ¿Hay alguna manera de determinar la cantidad de RAM de video gratuita en Linux?
- 5. ¿Hay alguna manera de establecer la cantidad de memoria disponible en el simulador de iPhone?
- 6. ¿Hay alguna manera de controlar la animación en una UITableView scrollToRowAtIndexPath?
- 7. Python: Iterar listas con diferente cantidad de dimensiones, ¿hay alguna manera genérica?
- 8. ¿Hay alguna manera de limitar la cantidad de memoria que usa "git gc"?
- 9. ¿Hay alguna manera de proteger la carpeta con la contraseña?
- 10. ¿Hay alguna manera de controlar qué conversión implícita será la predeterminada utilizada?
- 11. ¿Hay alguna manera de "reiniciar" la JVM?
- 12. ¿Hay alguna manera de "anular" un método con la reflexión?
- 13. ¿Hay alguna manera de usar facetas con la gema pg_search
- 14. ¿Hay alguna manera de leer la entrada estándar con JavaScript?
- 15. ¿Controlar la prioridad de programación de subprocesos de python?
- 16. ¿Hay alguna manera de controlar el elemento NSMenuItem que se resalta inicialmente al abrir un menú?
- 17. ¿Hay alguna herramienta para controlar la respuesta HTTP?
- 18. ¿Hay alguna manera de controlar cómo pytest-xdist ejecuta pruebas en paralelo?
- 19. ¿Hay alguna manera de evitar recursiones innecesarias?
- 20. ¿Hay alguna manera de controlar qué repositorios buscará Leiningen por defecto?
- 21. ¿Hay alguna manera de controlar automáticamente palabras huérfanas en un documento HTML?
- 22. ¿Hay alguna manera de usar errno de forma segura en una aplicación de subprocesos múltiples?
- 23. ¿Cuántos subprocesos genera la función pmap de Clojure para las operaciones de captación de URL?
- 24. ¿Hay alguna forma de controlar los cambios en un objeto?
- 25. ¿Hay alguna manera de crear complementos de Eclipse con Python?
- 26. ¿Cómo cambiar la cantidad de subprocesos de construcción en Xcode?
- 27. ¿Hay alguna manera de omitir el parámetro?
- 28. manera eficiente para contar las líneas cantidad obedeciendo alguna condición
- 29. ¿Hay alguna manera de animar diseños? [Android]?
- 30. ¿Hay alguna manera de usar Thickbox con contenido dinámico?