什麼會導致Clojure程序不能在完成主函數中的最後一條語句時立即退出?完成上次陳述後,Clojure程序不會退出嗎?
我所做的只是將(doall (map ...))
更改爲(doall (pmap ...))
,並且在退出之前,程序在完成其任務後突然停止好幾秒鐘。我把一個(println "Finished everything!")
上-main
函數的最後一行,它會打印,但仍然有一段時間不會退出。什麼可能導致這種行爲,我應該如何解決?
編輯:PMAP是並行程序的唯一部分(主要是因爲一切運行或多或少瞬間)。由於程序的後面部分需要pmap的所有結果才能正確運行,並且由於map和pmap的程序輸出是相同的,所以我有些懷疑pmap仍然會在程序結束時運行。將(System/exit 0)
放在末尾而不是println也不會更改程序輸出。
我猜PMAP不能完全做到做它的處理時,它的代碼觸發之後。很難說沒有更多的代碼顯示。的 – 2012-01-01 22:04:20
可能重複[已執行我的計算後,爲什麼Clojure的掛?](http://stackoverflow.com/questions/2622750/why-does-clojure-hang-after-having-performed-my-calculations) – amalloy 2012-01-01 22:31:11