Python并行编程
本书说明
1 认识并行计算和Python
1.1 介绍
1.2 并行计算的内存架构
1.3 内存管理
1.4 并行编程模型
1.5 如何设计一个并行程序
1.6 如何评估并行程序的性能
1.7 介绍Python
1.8 并行世界的Python
1.9 介绍线程和进程
1.10 开始在Python中使用进程
1.11 开始在Python中使用线程
2 基于线程的并行
2.1 介绍
2.2 使用Python的线程模块
2.3 如何定义一个线程
2.4 如何确定当前的线程
2.5 如何实现一个线程
2.6 使用Lock进行线程同步
2.7 使用RLock进行线程同步
2.8 使用信号量进行线程同步
2.9 使用条件进行线程同步
2.10 使用事件进行线程同步
2.11 使用with语法
2.12 使用 queue 进行线程通信
2.13 评估多线程应用的性能
3 基于进程的并行
3.1 介绍
3.2 如何产生一个进程
3.3 如何为一个进程命名
3.4 如何在后台运行一个进程
3.5 如何杀掉一个进程
3.6 如何在子类中使用进程
3.7 如何在进程之间交换对象
3.8 进程如何同步
3.9 如何在进程之间管理状态
3.10 如何使用进程池
3.11 使用Python的mpi4py模块
3.12 点对点通讯
3.13 避免死锁问题
3.14 集体通讯:使用broadcast通讯
3.15 集体通讯:使用scatter通讯
3.16 集体通讯:使用gather通讯
3.17 使用Alltoall通讯
3.18 简化操作
3.19 如何优化通讯
4 异步编程
4.1 介绍
4.2 使用Python的 concurrent.futures 模块
4.3 使用Asyncio管理事件循环
4.4 使用Asyncio管理协程
4.5 使用Asyncio控制任务
4.6 使用Asyncio和Futures
5 分布式Python编程
5.1 介绍
5.2 使用Celery实现分布式任务
5.3 如何使用Celery创建任务
5.4 使用SCOOP进行科学计算
5.5 通过 SCOOP 使用 map 函数
5.6 使用Pyro4进行远程方法调用
5.7 使用 Pyro4 链接对象
5.8 使用Pyro4部署客户端-服务器应用
5.9 PyCSP和通信顺序进程
5.10 使用Disco进行MapReduce
5.11 使用RPyC远程调用
6 Python GPU编程
6.1 介绍
6.2 使用PyCUDA模块
6.3 如何创建一个PyCUDA应用
6.4 理解PyCuDA内存模型
6.5 使用GPUArray进行内核调用
6.6 使用PyCUDA评估元素
6.7 使用PyCUDA进行MapReduce操作
6.8 使用NumbaPro进行GPU编程
6.9 使用GPU加速的库
6.10 使用PyOpenCL模块
6.11 如何创建一个PyOpenCL应用
6.12 使用PyOpenCL评估元素
6.13 使用PyOpenCL测试你的GPU应用
主页
资讯
文章
代码
电子书
第二章 基于线程的并行
2.1 介绍
2.2 使用Python的线程模块
2.3 如何定义一个线程
2.4 如何确定当前的线程
2.5 如何实现一个线程
2.6 使用Lock进行线程同步
2.7 使用RLock进行线程同步
2.8 使用信号量进行线程同步
2.9 使用条件进行线程同步
2.10 使用事件进行线程同步
2.11 使用with语法
2.12 使用 queue 进行线程通信
2.13 评估多线程应用的性能