【发布时间】:2012-01-01 21:53:34
【问题描述】:
什么会导致 Clojure 程序在完成主函数中的最后一条语句后没有立即退出?
我所做的只是将(doall (map ...)) 更改为(doall (pmap ...)),然后程序会在完成其任务后挂起好几秒钟,然后退出。我会在-main 函数的最后一行放一个(println "Finished everything!"),它会打印出来,但仍然有一段时间不退出。什么可能导致这种行为,我应该如何解决它?
编辑:pmap 是程序中唯一并行化的部分(主要是因为其他所有内容或多或少都会立即运行)。由于程序的后半部分需要 pmap 的所有结果才能正常运行,并且由于 map 和 pmap 的程序输出相同,我有点怀疑 pmap 是否仍会在程序结束时运行。将(System/exit 0) 放在末尾而不是 println 也不会改变程序输出。
【问题讨论】:
-
我猜 pmap 在触发后的代码时不能完全完成其处理。如果没有显示更多代码,很难说。
标签: clojure