Skip to Content
《高性能 Python》第二版
book

《高性能 Python》第二版

by Micha Gorelick, Ian Ozsvald
May 2025
Intermediate to advanced
468 pages
6h 20m
Chinese
O'Reilly Media, Inc.
Content preview from 《高性能 Python》第二版

第 10 章 群集和作业队列

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

集群通常被认为是计算机的集合,它们协同工作以完成一项共同任务。从外部可以将其视为一个较大的单一系统。

20 世纪 90 年代,在局域网上使用商品 PC 集群进行集群处理的概念开始流行,这种集群被称为 Beowulf 集群。 后来,谷歌通过在自己的数据中心使用商品 PC 集群,尤其是在运行 MapReduce 任务时,推动了这一做法。在规模的另一端, TOP500 项目每年都会对最强大的计算机系统进行排名;这些系统通常采用集群设计,速度最快的机器全部使用 Linux。

亚马逊网络服务(AWS)常用于云工程生产集群和按需构建集群,用于机器学习等短期任务。通过 AWS,您可以以每小时 1 到 15 美元的价格租用拥有 10 多个 CPU 和最多 768 GB 内存的小型到大型机器。租用多个 GPU 需要额外付费。如果你想探索 AWS 或其他提供商为计算密集型或内存密集型任务提供的临时集群,请参阅"使用 IPython Parallel 支持研究 "和 ElastiCluster 软件包。

不同的计算任务要求集群具有不同的配置、规模和功能。我们将在本章中定义一些常见的应用场景。

转用集群解决方案之前,请务必完成以下工作:

  • 剖析系统,了解瓶颈所在

  • 利用 Numba 和 Cython 等编译器解决方案

  • 在一台机器(可能是有许多内核的大型机器)上利用 Joblib 或multiprocessing

  • 利用技术减少内存使用量

将系统控制在一台机器上会让你的生活更轻松(即使 "一台机器 "是一台拥有大量内存和多个 CPU 的超强计算机)。如果您确实需要大量CPU 或并行处理磁盘数据的能力,或者您有高弹性和快速响应速度等生产需求,请迁移到集群。大多数研究场景并不需要弹性或可扩展性,而且人数有限,因此最简单的解决方案往往是最明智的。

待在一台大型机器上的好处是,像Dask 这样的工具可以快速并行处理您的 Pandas 或纯 Python 代码,而不会产生复杂的 Network+ 问题。Dask 还可以控制一个机器集群来并行处理 Pandas、NumPy 和纯 Python 问题。Swifter 通过搭载 Dask 自动并行处理某些多核单机情况。本章稍后将介绍 Dask 和 Swifter。

集群的好处

集群最明显的优势是可以轻松扩展计算需求--如果需要处理更多数据或更快地得到答案,只需增加更多机器(或节点)即可。

通过增加机器,还可以提高可靠性。每台机器的组件都有一定的故障可能性,但如果设计得当,一些组件的故障不会导致集群停止运行。

集群还可用于创建可动态扩展的系统。一个常见的用例是将一组处理网络请求或相关数据(如调整用户照片大小、视频转码或语音转录)的服务器集群化,并在一天中的某些时段随着需求的增加而激活更多的服务器。

只要机器启动时间足够快,能够应对需求变化的速度,动态扩展就是一种非常经济有效的处理非均匀使用模式的方法。

提示

考虑构建集群的付出与回报。虽然集群的并行化收益很有吸引力,但也要考虑与构建和维护集群相关的成本。集群非常适合生产环境中长期运行的流程或定义明确且经常重复的研发任务。而对于多变和短暂的研发任务,集群的吸引力则较小。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

《学习 Python》第 5 版

《学习 Python》第 5 版

Mark Lutz
ppk on JavaScript

ppk on JavaScript

Peter-Paul Koch

Publisher Resources

ISBN: 9798341657946