博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Clojure数据分析秘笈》——3.5节将agent和STM结合使用
阅读量:6863 次
发布时间:2019-06-26

本文共 812 字,大约阅读时间需要 2 分钟。

本节书摘来自华章社区《Clojure数据分析秘笈》一书中的第3章,第3.5节将agent和STM结合使用,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.5 将agent和STM结合使用

agent本身非常实用。但是如果agent函数需要与agent外部数据保持一致性,需要将agent和STM结合使用:使用send或send-off函数协调agent的状态,将dosync、ref-set、alter或者commute整合至agent函数来协调其他状态。
结合使用简化了状态和数据的一致性问题。这对于管理数据处理和分析系统复杂度提供了极大的帮助。
本方法中,还是处理前几个方法中的问题:在2010年美国人口普查数据中计算Virginia每个住宅单元的家庭数。这次结构稍有变化。数据序列将在引用中,而不是在agent状态中。也会使用计数器标识agent是否完成。

3.5.1 准备工作

使用与3.2节中相同的依赖。除了相同的引用外,还需要导入Java的包:

使用前几种方法中的值和函数。在3.2节中,使用data-file、lazy-read-csv、with-heade、->int、sum-item和sum-items。在3.3节中,使用accum-sums、div-vec和force-val。

3.5.2 具体实现

本方法中,需要定义一些新的函数来遍历输入块队列并阻塞至整个处理过程完成。

  1. 需要一个函数将输入序列中一个元素取出并将引用指向序列剩余部分。

7798989c2ffc66894f8c34c69dc9a3a0f2bc45f3

b497140049b18b622952133cdb08fa284f9d6d3b

3.5.3 实现原理

get-chunk函数是STM帮助维护状态一致性的示例。由于它们在相同的dosync块中,访问数据得到其第一个元素并将引用指向序列的剩余部分是一个原子操作。不必担心由于进程的原因数据被处理两次或者被遗漏。调用get-chunk的函数也不用担心此类事情。将复杂的部分隐藏起来极大简化了复杂系统。

转载地址:http://cueyl.baihongyu.com/

你可能感兴趣的文章
C#基础 for 穷举、迭代
查看>>
2018.3.17 模拟赛——(2)删数
查看>>
冒泡排序
查看>>
Mysql字段合并
查看>>
五笔反查工具
查看>>
python 类的继承
查看>>
python 爬取<a>标签内href的方法及遇到的问题
查看>>
.Net 环境下比较各种数据库插入操作的性能
查看>>
CSS: rem
查看>>
驰骋工作流引擎-流程数据md5加密
查看>>
javascript基础学习(一)
查看>>
MSSQL排序规则冲突
查看>>
synchronize模块
查看>>
批量修改文件名(Python)
查看>>
枚举排列
查看>>
MapReduce的手机流量统计的案例
查看>>
zabbix_get 命令介绍
查看>>
jQuery属性操作之类样式操作
查看>>
技术人员的发展之路
查看>>
简单易懂,原码,补码,反码
查看>>