Clojureでは、どのようにpmapのようなメソッドを実行し、コレクション内のすべてのアイテムが処理されたときに関数を呼び出すことができますか?Clojureでpmapが完成したら、どのように関数を呼び出すのですか?
1
A
答えて
2
マッピングを適用し、その後、いくつかのコールバック関数を呼び出しますよう、機能でそれをラップすることができます:
user> (defn pmap-callback [callback f & colls]
(let [res (doall (apply pmap f colls))]
(callback res)
res))
#'user/pmap-callback
user> (pmap-callback #(println "complete!" %)
+ [1 2 3] [4 5 6])
;;=> complete! (5 7 9)
(5 7 9)
2
pmap
ドキュメンテーション文字列から:
マップと同様に、fが適用されることを除いて並行して。 並列計算が消費より先にとどまるが、 は必要でない限り全体の結果を実現しないという点で半怠惰である。 fの時間が の調整オーバーヘッドを支配する計算集約型関数の場合にのみ有効です。
したがって、結果シーケンスのすべての要素を尋ねるまで、pmap
結果は完全には計算されません。他の遅延シーケンスと同様に、doall
(評価されたシーケンスコンテンツ全体を保持する必要がある場合)またはdorun
を使用して、遅延シーケンスを完全に実現させることができます(マッピング機能によって行われる副作用のみに興味があり、評価されたシーケンス)。
すべての結果が計算されたときに関数を実行するには、dorun
またはdoall
の呼び出しの直後に関数を呼び出すことができます。
pmap
は、処理が完了したときに通知を受け取ることができる非同期並列ジョブをスケジュールするためのツールではありません。そのような場合は、Clojure core.asyncの方が良いでしょう。
関連する問題
- 1. clojureで関数を呼び出す
- 2. 関数が呼び出されたかどうかを確認するClojureマクロ
- 3. javascriptからangularjs関数をどのように呼び出すのですか?
- 4. 関数内の関数をどのように呼び出すのですか?
- 5. clojureで関数を呼び出して結果を得るにはどうすればよいですか?
- 6. 変数arg関数がどのようにしてPythonで別の関数を呼び出すのですか?
- 7. JavaからClojureバリデーション関数を呼び出す方法
- 8. CからClojure関数を呼び出す方法は?
- 9. 呼び出された関数から(元の関数で)javascript関数を呼び出していますか?
- 10. ブラウザイベントでtriggerを呼び出した後、終了したらどのように関数を呼び出すことができますか?
- 11. すべてのodata呼び出しが完了したら、画面でどのように知りますか?
- 12. 別の関数呼び出しで関数を呼び出す
- 13. FreeMarkerマクロ内で関数をどのように呼び出すのですか?
- 14. Clojure:ベクトルで各要素の関数を呼び出す
- 15. ページのロードが完了したら、どのように関数を呼び出すことができますか? (そしてそれだけです)
- 16. フラグメント内の関数を別の関数から呼び出すにはどうすればよいですか?
- 17. 部分ビューでのajax呼び出しが完了したら、ホストMVCページでjavascriptを呼び出すにはどうすればよいですか?
- 18. unique_ptrでどのように関数呼び出し演算子を呼び出しますか?
- 19. スカラーの引数として "by-name"を呼び出す関数をどのように呼び出すか
- 20. このjavascript関数をどのように呼び出すのですか?
- 21. C#のReplaceFile関数をどのように呼び出すのですか?
- 22. Collections.sortの完了後に関数を呼び出すにはどうすればよいですか?
- 23. 呼び出された、存在しない関数の関数名の完成
- 24. ngrx:reducers関数が呼び出されたときにどのように呼び出されますか?
- 25. WWW :: Mechanize :: FirefoxでjQuery関数やAngular関数を呼び出すにはどうしたらいいですか?
- 26. 関数呼び出しから関数呼び出し名を抽出する
- 27. Clojureでどのように呼び出し可能オブジェクトを作成しますか?
- 28. 他の関数の返された内部関数をどのように呼び出すのですか?
- 29. フォームからphp関数を呼び出して、結果のフォームを完成
- 30. Clojure:スクリプトから関数を呼び出すと、RuntimeExceptionがスローされます。