¿Qué causaría que un programa Clojure no salga inmediatamente después de finalizar la última instrucción en la función principal?¿El programa Clojure no sale cuando finaliza la última declaración?
Todo lo que hice fue cambiar un (doall (map ...))
a un (doall (pmap ...))
, y de repente el programa se bloqueó al completar sus tareas durante un buen número de segundos antes de salir. Pondría un (println "Finished everything!")
en la última línea de la función -main
, e imprimiría eso, pero aún no saldrá por un tiempo. ¿Qué podría causar este comportamiento y cómo debería solucionarlo?
EDITAR: El pmap es la única parte del programa que está paralelizada (principalmente porque todo lo demás se ejecuta más o menos al instante). Como las últimas partes del programa requieren todos los resultados de pmap para funcionar correctamente, y como la salida del programa es la misma tanto para map como para pmap, dudo que pmap todavía se esté ejecutando al final del programa. Poner (System/exit 0)
al final en lugar de println tampoco cambia la salida del programa.
supongo que pmap no debe hacerse por completo haciendo su procesamiento cuando el código después de que se dispara. Difícil de decir sin más código mostrado. –
posible duplicado de [¿Por qué cuelga Clojure después de haber realizado mis cálculos?] (Http://stackoverflow.com/questions/2622750/why-does-clojure-hang-after-having-performed-my-calculations) – amalloy