内容简介

若想充分利用所有的计算资源来构建高效的软件系统,并行编程技术是不可或缺的一项技能。《Python 并行编程手册》以Python为蓝本,对并行编程领域的各项技术与知识进行了广泛且深入的讲解。通过对《Python 并行编程手册》的学习,读者将能够快速且准确地掌握并行编程方方面面的技能,从而应用在自己的项目开发中,提升系统运行效率。《Python 并行编程手册》共分为6章,从原理到实践系统化地对并行编程技术进行了层层剖析,并通过大量可运行的实例演示了每一个知识点的具体运用方式,是提升并行编程技能的一本不可多得的好书。相信《Python 并行编程手册》的出版将会填补Python在并行领域应用的一大空白,能够帮助想要从事并行编程与并行计算的读者提升实践能力,并将这一能力应用到实际的项目开发中。

作者简介

GiancarloZaccone拥有超过10年的管理研发项目的经验,涉及到科学与工业这两个领域。他曾以研究员身份就职于国家研究委员会(CNR),主要从事一些并行科学计算与科学可视化项目。他目前作为一名软件工程师就职于一家咨询公司,主要负责开发和维护一些面向太空和防御应用的软件系统。Giancarlo拥有那不勒斯费德里科II大学的物理学硕士学位,并且获得了罗马大学科学计算专业的第二研究生学位。可以通过https://it.linkedin.com/in/giancarlozaccone了解到关于Giancarlo的更多信息。
两位译者均拥有10年以上的系统研发与管理经验,关注领域主要有高并发程序设计、JVM设计与实现、函数式编程与分布式系统设计与实现。对于编写优雅的代码有着不懈的追求,喜欢一切简单而美好的事物。

目录

目录
1 并行计算与Python起步...............................................1

介绍..................................1
并行计算内存架构..........2
内存组织..........................5
并行编程模型................10
如何设计并行程序........12
如何评估并行程序的性能....................................................14
Python简介....................16
并行世界中的Python....20
进程与线程介绍............21
开始在Python中使用进程....................................................21
开始在Python中使用线程....................................................23

2 基于线程的并行..27

介绍................................27
使用Python的线程模块28
如何定义线程................28
如何确定当前的线程....30
如何在子类中使用线程32
使用Lock与RLock实现线程同步........................................34
使用RLock实现线程同步.....................................................38
使用信号量实现线程同步....................................................40
使用条件实现线程同步44
使用事件实现线程同步47
使用with语句................51
使用队列实现线程通信53
评估多线程应用的性能57

3 基于进程的并行63

介绍................................64
如何生成进程................64
如何对进程命名............66
如何在后台运行进程....68
如何杀死进程................69
如何在子类中使用进程70
如何在进程间交换对象72
如何同步进程................78
如何管理进程间状态....81
如何使用进程池............82
使用mpi4py模块...........84
点对点通信....................87
避免死锁问题................91
使用广播实现聚合通信94
使用scatter实现聚合通信.....................................................96
使用gather实现聚合通信......................................................99
使用Alltoall实现聚合通信.................................................101
汇聚操作......................103
如何优化通信..............105

4 异步编程.........111

介绍..............................111
使用Python的concurrent.futures模块..............................112
使用Asyncio实现事件循环管理........................................116
使用Asyncio处理协程120
使用Asyncio管理任务125
使用Asyncio和Futures128

5 分布式Python133

介绍..............................133
使用Celery分发任务.134
如何使用Celery创建任务.................................................136
使用SCOOP进行科学计算...............................................139
使用SCOOP处理映射函数...............................................143
使用Pyro4远程调用方法..................................................147
使用Pyro4链接对象..150
使用Pyro4开发一个客户端-服务器应用.........................156
使用PyCSP实现顺序进程通信........................................162
在Disco中使用MapReduce................................................167
使用RPyC调用远程过程..................................................172

6 使用Python进行GPU编程.......................................175

介绍..............................175
使用PyCUDA模块....177
如何构建一个PyCUDA应用............................................181
通过矩阵操作理解PyCUDA内存模型............................186
使用GPUArray调用内核..................................................192
使用PyCUDA对逐元素表达式求值................................194
使用PyCUDA进行MapReduce操作...............................198
使用NumbaPro进行GPU编程..........................................201
通过NumbaPro使用GPU加速的库................................206
使用PyOpenCL模块..211
如何构建一个PyOpenCL应用..........................................214
使用PyOpenCL对逐元素表达式求值................................218
使用PyOpenCL测试GPU应用........................................221

其他推荐