Clojureプログラムは、main関数の最後のステートメントを終了するとすぐに終了しません。最後のステートメントを終了するとClojureプログラムは終了しませんか?
私がしたのは、(doall (map ...))
を(doall (pmap ...))
に変更することでした。終了する前に、タスクが完了すると突然プログラムがハングして終了しました。私は(println "Finished everything!")
を-main
関数の最後の行に置き、それを出力しますが、しばらくの間は終了しません。何がこの動作を引き起こし、どのように修正する必要がありますか?
編集:pmapは、並列化されたプログラムの唯一の部分です(主に他のすべてが瞬間的に実行されるため)。プログラムの後半部分は正しく機能するためにはpmapのすべての結果が必要で、プログラムの出力はmapとpmapの両方で同じであるため、プログラムの最後にpmapが実行されているかどうかは疑いの余地があります。 printlnではなく末尾に(System/exit 0)
を置いても、プログラムの出力は変わりません。 docsによれば
私はそれが発火コードの後にするときPMAPは完全にその処理をやってはいけないことを推測すると思います。もっとコードを表示せずに伝えるのは難しいです。 –
私は計算を実行した後にClojureがなぜハングしますか?(http://stackoverflow.com/questions/2622750/why-does-clojure-hang-after-performed-my-calculations) – amalloy