Clojure线程在map求值之间睡眠
我需要在Clojure中执行一段代码,如下所示:Clojure线程在map求值之间睡眠,clojure,Clojure,我需要在Clojure中执行一段代码,如下所示: (map function coll) 但是,我需要延迟每个连续函数调用之间的时间间隔。也就是说,我想用第一项调用函数,然后睡眠10秒钟,然后用第二项调用,以此类推 如何做到这一点 提前感谢您的帮助。为了完整起见,根据评论中的讨论,使用doseq的实现看起来像是一个简洁的小函数: (defn doseq-interval [f coll interval] (doseq [x coll] (Thread/sleep in
(map function coll)
但是,我需要延迟每个连续函数调用之间的时间间隔。也就是说,我想用第一项调用函数
,然后睡眠10秒钟,然后用第二项调用,以此类推
如何做到这一点
提前感谢您的帮助。为了完整起见,根据评论中的讨论,使用
doseq
的实现看起来像是一个简洁的小函数:
(defn doseq-interval
[f coll interval]
(doseq [x coll]
(Thread/sleep interval)
(f x)))
你可以这样称呼它:
(doseq-interval prn (range 10) 1000)
这听起来好像你不应该在这里使用
map
——它提供了一个分块序列,而听起来你实际上是在寻找对时间敏感的副作用。坦率地说,当时间很重要时,我倾向于使用core.async
;编写一个Interperced通道通过超时操作读取的goroutine是非常自然的。您到底想实现什么?如果您正在调用函数
以查看coll
的每个元素的副作用,您可能希望在调用之间使用doseq
进行睡眠。啊,对了,doseq
正是我要找的。谢谢,查尔斯和迭戈。