天天看点

《Clojure数据分析秘笈》——3.3节使用agent管理程序复杂度

本节书摘来自华章社区《clojure数据分析秘笈》一书中的第3章,第3.3节使用agent管理程序复杂度,作者(美)eric rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.3 使用agent管理程序复杂度

agent基于stm,并且每个agent的作用与一个引用很相近。可以通过发送agent消息(修改agent状态的函数)来使用agent,并且那些agent运行在进程池中。

使用agent函数创建agent,使用send和send-off函数向其发送消息。函数返回值是agent的新的状态值。

本方法中,解决与3.2节中相同的问题。

3.3.1 准备工作

与3.2节中相同,将引用添加到project.clj文件中并将需要的库加入repl中。也使用相同的输入文件,同样将该文件命名为data-file。

也仍使用上一种方法中的一些工具函数:lazy-read-csv、with-header、->int、sum-item和sum-items。

3.3.2 具体实现

为了使用agent,只需要在上一方法的基础上加入几个新的函数。

第一个函数命名为accum-sums。使用其将成对的信息加入agent的输出中。

《Clojure数据分析秘笈》——3.3节使用agent管理程序复杂度
《Clojure数据分析秘笈》——3.3节使用agent管理程序复杂度

继续阅读