Что вызовет немедленный выход программы Clojure после завершения последнего оператора в основной функции?
Все, что я сделал, это изменить (doall (map ...))
на (doall (pmap ...))
, и внезапно программа зависнет после завершения своих задач за большое количество секунд до выхода. Я бы поставил (println "Finished everything!")
в последнюю строку функции -main
, и он напечатает это, но все же не выйдет в течение некоторого времени. Что может вызвать это поведение и как его исправить?
EDIT: pmap является единственной частью программы, которая распараллеливается (главным образом потому, что все остальное работает более или менее мгновенно). Поскольку последние части программы требуют всех результатов от pmap для правильной работы, а так как выход программы одинаковый для обеих карт и pmap, я несколько сомневаюсь, что pmap все равно будет работать в конце программы. Помещение (System/exit 0)
в конец вместо println также не изменяет выход программы.