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

简介:

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

3.2 使用STM管理程序复杂度
Clojure并发特性的基础是它的STM系统。这基本上是将数据库事务的语义扩展至计算机内存中。
STM工作方式是使用ref函数标记由STM控制的内存位置。可以使用deref函数或者@宏在任意位置对那些内存位置进行反引用。但是仅能修改在dosync块内部引用的值。接着,当事务执行完毕后,STM执行检查。如果事务改变的引用被另一个事务修改,事务失败,并排队进行重试。然而,如果没有引用改变,事务成功并提交。
当在事务中时,如果在外部编程,这些值不会改变。一旦事务提交,使用ref-set或者alter对那些位置所做的修改将在程序块外可见。
警告:使用STM应该仅使用Clojure本地的不可变的数据类型。这听起来限制较大,但在实践中,它并不是个大问题:Clojure有一个丰富又灵活的数据类型集合。而且,我们应该限制在每个事务中所做的工作量。我们仅想将那些真正必须成功或失败的操作绑定在一起作为一个集合。
STM帮助管理复杂度,通过允许将整个处理过程按一种对最有意义的方式分解,然后并发执行这些过程。STM和不可变状态一起使得系统简单而又易理解。

相关文章
|
算法 大数据 数据挖掘
《Clojure数据分析秘笈》——导读
本节书摘来自华章社区《Clojure数据分析秘笈》一书中的目录,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看
1833 0
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
1350 4
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
505 2
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
782 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
2171 4
数据分析的 10 个最佳 Python 库