Skip to content

Instantly share code, notes, and snippets.

@noisesmith
Created December 20, 2015 20:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save noisesmith/7bfe66ca6f81c2b2eb76 to your computer and use it in GitHub Desktop.
Save noisesmith/7bfe66ca6f81c2b2eb76 to your computer and use it in GitHub Desktop.
Clojure 1.7.0
user=> (require '[clojure.core.async :as > :refer [chan go go-loop thread <! >! <!! >!!]])
nil
user=> (def requests (chan))
#'user/requests
user=> (def results (chan))
#'user/results
user=> (go-loop [result "\n\ninit\n\n"] (println "got" (subs result 0 (min (count result) 10))) (recur (<! results)))
#object[clojure.core.async.impl.channels.ManyToManyChannel 0x45273d40 "clojure.core.async.impl.channels.ManyToManyChannel@45273d40"]
user=> got
init
(def rq-load 3)
#'user/rq-load
user=> (dotimes [i rq-load] (thread (loop [] (when-let [req (<!! requests)] (>!! results (slurp req)) (recur)))))
nil
user=> (doseq [url ["http://google.com" "http://yahoo.com" "http://zombo.com" "http://reddit.com"]] (>!! requests url))
got <html>
<he
nil
user=> got <HTML>
<HE
got
got <!doctype
user=> (doseq [url ["http://google.com" "http://yahoo.com" "http://zombo.com" "http://reddit.com"]] (>!! requests url))
got <html>
<he
nil
user=> got
got <HTML>
<HE
got <!doctype
user=>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment