- 内容提要
- 前言
- 作者简介
- 封面简介
- 第1章 理解高性能 Python
- 第2章 通过性能分析找到瓶颈
- 2.1 高效地分析性能
- 2.2 Julia 集合的介绍
- 2.3 计算完整的 Julia 集合
- 2.4 计时的简单方法——打印和修饰
- 2.5 用 UNIX 的 time 命令进行简单的计时
- 2.6 使用 cProfile 模块
- 2.7 用 runsnakerun 对 cProfile 的输出进行可视化
- 2.8 用 line_profiler 进行逐行分析
- 2.9 用 memory_profiler 诊断内存的用量
- 2.10 用 heapy 调查堆上的对象
- 2.11 用 dowser 实时画出变量的实例
- 2.12 用 dis 模块检查 CPython 字节码
- 2.13 在优化期间进行单元测试保持代码的正确性
- 2.14 确保性能分析成功的策略
- 2.15 小结
- 第3章 列表和元组
- 第4章 字典和集合
- 第5章 迭代器和生成器
- 第6章 矩阵和矢量计算
- 第7章 编译成 C
- 第8章 并发
- 第9章 multiprocessing 模块
- 第10章 集群和工作队列
- 第11章 使用更少的 RAM
- 第12章 现场教训
第10章 集群和工作队列
读完本章之后你将能够回答下列问题
为什么集群是有用的?
集群的代价是什么?
我该如何把一个多进程的解决方案转换成一个集群解决方案?
IPython集群如何工作?
NSQ是怎样有助于创建鲁棒的生产系统?
一个集群通常被视作一组共同工作来解决公共问题的计算机集合。从外部看来,它可能就是一个更大的独立系统。
在20世纪90年代,在一个本地局域网上使用一组商业PC的集群来进行集群化处理的概念变得流行起来——被称作Beowulf集群。后来Google在自己的数据中心通过使用商业PC集群的实践,得到了一个巨大的提升,尤其是针对运行MapReduce的任务。在天平的另一端,TOP500项目每年对最强大的计算机系统进行排名,这些系统都具有典型的集群化的设计,并且最快的机器都使用了Linux。
亚马逊Web服务(AWS)通常既被用来做云中的工程产品集群,又被用来为短期的项目比如机器学习来按需构建集群。使用AWS,你能够租用多台八核Intel Xeon,60GB的RAM的机器,每小时单台1.68美元,还有244GB RAM的机器以及具有GPU的机器。如果你想要为计算密集型的任务探索AWS的临时集群,可以看看第10.6.2节和StarCluster包。
不同的计算任务需要不同配置、不同大小、不同容量的集群。在本章中我们会定义一些公共的场景。
在你转移到集群化的解决方案时,确保你已经:
度量了你的系统,因此你理解瓶颈在哪里。
探索了类似Cython的编译器解决方案。
在一台单独的机器上利用了多核(可能一台大型机器上有很多核)。
探索了使用更少RAM的技术。
让你的系统保持运行在一台机器上(即使“一台机器”其实是强大的具有许多RAM和CPU的计算机)将会让你的生活更轻松些。如果你真的需要许多CPU或者并行处理来自磁盘上的数据的能力,抑或是具有类似高弹性和高响应速度之类的产品需求,那么请转移到一个集群上去。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论