在Clojure中并行执行同一函数多次?
我有一个函数,我想运行多次,生成一个结果列表:在Clojure中并行执行同一函数多次?,clojure,parallel-processing,Clojure,Parallel Processing,我有一个函数,我想运行多次,生成一个结果列表: (take 10 (repeatedly #(myfunc))) 我意识到我可以与pmap并行运行它们: (pmap (fn [_] (myfunc)) (range 10)) 但是它有点不整洁。是否有一个标准函数可以让我这样做: (prun 10 #(myfunc)) ?我认为没有现有的功能,但使用而不是pmap似乎更接近您想要的功能: (defn prun [n f] (apply pcalls (repeat n f))) 顺便说
(take 10 (repeatedly #(myfunc)))
我意识到我可以与pmap
并行运行它们:
(pmap (fn [_] (myfunc)) (range 10))
但是它有点不整洁。是否有一个标准函数可以让我这样做:
(prun 10 #(myfunc))
?我认为没有现有的功能,但使用而不是
pmap
似乎更接近您想要的功能:
(defn prun [n f]
(apply pcalls (repeat n f)))
顺便说一句,您不需要在对的调用中反复使用#()
包装myfunc
,也不需要调用上面定义的prun
:
(prun 10 myfunc)
您可能会发现它也很有用。您可能还对管理线程池和并行处理感兴趣。查看他们的pmap
和pfor
版本,您可以使用dotimes
(dotimes [_ 10] (myfunc))
这将运行您的函数10次。请确保在与函数相同的名称空间中运行此函数哇,这正是我想要的。谢谢我在查看文档时没有遇到这些电话。很高兴这有帮助,安娜。你可能想投票,也可能会接受。由你决定。