Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Clojure中并行执行同一函数多次?_Clojure_Parallel Processing - Fatal编程技术网

在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次。请确保在与函数相同的名称空间中运行此函数

哇,这正是我想要的。谢谢我在查看文档时没有遇到这些电话。很高兴这有帮助,安娜。你可能想投票,也可能会接受。由你决定。