计算行业的特点是追求不断增长和高效的性能,从网络、电信、航空电子等领域的高端应用,到台式计算机、笔记本电脑和视频游戏中的低功耗嵌入式系统。这种发展道路导致了多核系统,其中两核、四核,而八核处理器只是即将扩展到数量不断增加的计算核心的开始。
然而,这种扩展带来了挑战,不仅在半导体行业,而且在可通过并行计算执行的应用程序开发方面。
并行计算实际上代表了同时使用多个计算资源来解决一个处理问题,从而可以在多个 CPU 上执行,将一个问题分解为可以同时处理的离散部分,其中,每一条指令被进一步划分为一系列指令,这些指令可以在不同的 CPU 上串行执行。
计算资源可以包括具有多个处理器的单台计算机、通过网络连接的任意数量的计算机,或两种方法的组合。并行计算一直被认为是计算的最高点或未来,直到几年前,它的动机是对涉及各个部门的复杂系统和情况进行数值模拟:天气和气候预测、化学和核反应、人类基因组绘图、地震和地质活动、机械装置(从假肢到航天飞机)、电子电路和制造工艺。
然而,今天,越来越多的商业应用越来越要求开发速度更快的计算机,以支持以复杂方式处理大量数据。这方面的应用包括数据挖掘和并行数据库、石油勘探、网络搜索引擎和服务网络化业务、计算机辅助医疗诊断、跨国公司管理、高级图形和虚拟现实(特别是在视频游戏行业)、多媒体和视频网络技术,和协作工作环境。
最后但并非最不重要的一点是,并行计算试图最大限度地利用无限但同时又日益宝贵和稀缺的时间资源。这就是为什么并行计算正在从为少数人保留的非常昂贵的超级计算机世界,转向基于多处理器的更经济和更有效的解决方案,图形处理单元(GPU),或几个相互连接的计算机,可以克服串行计算的限制和单个 CPU 的限制。
介绍并行编程的概念,并行编程是最流行的编程语言之一已采用-Python。Python 的流行部分是由于它的灵活性,因为它是 web 和桌面开发人员、系统管理员和代码开发人员经常使用的一种语言,最近,数据科学家和机器学习工程师也经常使用它。
从技术角度来看,在 Python 中,没有单独的编译阶段(例如,在 C 中发生的情况)从源代码开始生成可执行文件。它是伪解释的,这使得 Python 成为一种可移植语言。一旦编写了源代码,它就可以在当前使用的大多数平台上进行解释和执行,无论这些平台是苹果(macOS X)还是 PC(Microsoft Windows 和 GNU/Linux)
Python 的另一个优势是它的易学性。任何人都可以在几天内学会使用它并编写他们的第一个应用程序。在这种情况下,语言的开放结构起着基础作用,没有多余的声明,因此与口语极为相似。最后,Python 是自由软件:不仅 Python 解释器和 Python 在我们的应用程序中的使用是免费的,而且 Python 还可以根据完全开放源代码许可证的规则进行自由修改和重新发布。
Python 并行编程烹饪书,第二版,包含了各种各样的示例,为读者提供了解决实际问题的机会。它研究了并行体系结构的软件设计原则,坚持程序清晰的重要性,并避免使用复杂的术语,支持清晰直接的示例。
每个主题都作为一个完整的、可运行的 Python 程序的一部分呈现,后面总是有相关程序的输出。各章的模块化组织提供了一条经过验证的路径,可以从最简单的论点过渡到最高级的论点,但也适合那些只想学习一些具体问题的人。
Python 并行编程烹饪书,第二版,面向希望使用并行编程技术编写强大高效代码的软件开发人员。阅读这本书将使你掌握并行计算的基础和高级方面
Python 编程语言易于使用,允许非专家轻松地处理和理解本书中概述的主题。
第一章并行计算入门和 Python概述了并行编程架构和编程模型。本章介绍了 Python 编程语言,讨论了该语言的特点、易学性和易用性、可扩展性以及可用软件库和应用程序的丰富性如何使 Python 成为任何应用程序,尤其是并行计算的宝贵工具。
第 2 章基于线程的并行性使用threading
Python 模块讨论线程并行性。读者将通过完整的编程示例学习如何同步和操作线程,以便在多线程应用程序中实现
第 3 章基于进程的并行引导读者通过基于进程的方法来并行化程序。一整套示例将向读者展示如何使用multiprocessing
Python 模块
第 4 章消息传递主要介绍消息传递交换通信系统。特别地,mpi4py
库将通过大量应用示例进行描述
第 5 章异步编程解释了并发编程的异步模型。在某些方面,它比线程化的更简单,因为只有一个指令流,任务显式地放弃控制,而不是任意挂起。本章向读者展示了如何使用asyncyio
模块将每个任务组织为一系列较小的步骤,这些步骤必须以异步方式执行。
第 6 章分布式 Python向读者介绍了分布式计算,即聚合多个计算单元,以透明一致的方式协同运行单个计算任务的过程。特别是,本章中提供的示例应用程序描述了如何使用socket
和芹菜模块来管理分布式任务
第 7 章、云计算概述了与 Python 编程语言相关的主要云计算技术。PythonyWhere平台对于在云上部署 Python 应用程序非常有用,本章将对此进行探讨。本章还包含示范使用容器和无服务器技术的示例应用程序。
第 8 章异构计算着眼于现代 GPU,这些 GPU 以增加编程复杂性为代价,为数值计算提供了突破性的性能。事实上,GPU 的编程模型要求编码器手动管理 CPU 和 GPU 之间的数据传输。本章将通过编程示例和用例,教读者如何利用PyCUDA、Numba强大的 Python 模块,利用 GPU 卡提供的计算能力,以及PyOpenCL
第 9 章Python 调试和测试是最后一章,介绍了软件工程中的两个重要主题:调试和测试。具体描述如下 Python 框架:winpdb-reborn
用于调试,unittest
和nose
用于软件测试。
这本书是独立的:开始阅读之前唯一的基本要求是对编程的热情和对书中所涉及主题的好奇心。
您可以从您的账户www.packt.com下载本书的示例代码文件。如果您在其他地方购买了本书,您可以访问www.packtpub.com/support并注册,将文件通过电子邮件直接发送给您。
您可以通过以下步骤下载代码文件:
- 登录或注册www.packtpub.com。
- 选择“支持”选项卡。
- 点击代码下载。
- 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作。
下载文件后,请确保使用以下最新版本解压或解压缩文件夹:
- WinRAR/7-Zip for Windows
- 适用于 Mac 的 Zipeg/iZip/UnRarX
- 适用于 Linux 的 7-Zip/PeaZip
该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/Python-Parallel-Programming-Cookbook-Second-Edition 。我们的丰富书籍和视频目录中还有其他代码包,请访问**https://github.com/PacktPublishing/** 。看看他们!
我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。您可以在这里下载:https://static.packt-cdn.com/downloads/9781789533736_ColorImages.pdf 。
本书中使用了许多文本约定。
CodeInText
:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。下面是一个例子:“使用terminate
方法可以立即终止进程。”
代码块设置如下:
import socket
port=60000
s =socket.socket()
host=socket.gethostname()
当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示:
p = multiprocessing.Process(target=foo)
print ('Process before execution:', p, p.is_alive())
p.start()
任何命令行输入或输出的编写方式如下:
> python server.py
粗体:表示一个新术语、一个重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词出现在文本中,如下所示。下面是一个示例:“转到系统属性|环境变量|用户或系统变量|新建。”
Warnings or important notes appear like this. Tips and tricks appear like this.
在这本书中,你会发现几个经常出现的标题(准备就绪、如何做……、如何工作……、还有更多……、另见。
要明确说明如何完成配方,请使用以下部分:
本节告诉您配方中的预期内容,并介绍如何设置配方所需的任何软件或任何初步设置。
本节包含遵循配方所需的步骤。
本节通常包括对上一节中发生的情况的详细解释。
本节包含有关配方的附加信息,以使您更了解配方。
本节提供了有关配方的其他有用信息的有用链接。
我们欢迎读者的反馈。
一般反馈:发送电子邮件feedback@packtpub.com
并在邮件主题中提及书名。如果您对本书的任何方面有疑问,请发送电子邮件至questions@packtpub.com
。
勘误表:尽管我们已尽一切努力确保内容的准确性,但还是会出现错误。如果您在本书中发现错误,如果您能向我们报告,我们将不胜感激。请访问www.packtpub.com/support/errata,选择您的书籍,单击 errata 提交表单链接,然后输入详细信息。
盗版:如果您在互联网上发现我们作品的任何形式的非法复制品,请您提供我们的位置地址或网站名称,我们将不胜感激。请通过copyright@packtpub.com
与我们联系,并提供该材料的链接。
如果您有兴趣成为一名作家:如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请访问authors.packtpub.com。
请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在读者可以看到并使用您的无偏见意见做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们书籍的反馈。非常感谢。
有关 Packt 的更多信息,请访问packtpub.com。