11.1. 并行运算

Python 包含了使用进程和线程管理并发操作的复杂工具。通过使用这些模块并发运行部分作业的技术,甚至可以使许多相对简单的程序运行的更快。

subprocess 提供了创建并与子进程通信的 API。由于 API 支持在新的进程标准输入输出之间来回传递数据,因此他对于那些处理文本的程序比较有意义。

 signal 模块暴露出了发送事件到其它进程的 Unix 信号机制。信号是被异步处理的,通常通过中断程序运行来处理信号到达。信号对于粗放的消息系统是很有用的,但是进程间通信更可靠而且可以传递更复杂的消息。

threading 包含了高级的面向对象的 API 处理 Python 中的并发。 Thread  对象可以在相同进程中并发运行并且共享内存。对于 I/O 密集型程序(非 CPU 密集型程序)使用线程是一个扩展任务的简单方式。

multiprocessing 同threading基本一样,除了它提供的是 Process 而不是 Thread 类。每个 Process 实例是一个真实的系统进程,多个进程之间不会共享内存,但是  multiprocessing  提供了在进程之间共享数据以及传递消息的功能,所以在很多情况下从线程切换为进程就像改变 import 语句那样简单。

asyncio 为使用基于类的协议系统或协程的并发和异步 I/O 管理提供了一个框架。 asyncio  取代了旧的 asyncoreasynchat 模块,这些模块仍然可用但是已经被启用。

concurrent.futures 提供了线程和基于进程的执行程序的实现,用于管理运行并发任务的资源池。

本文章首发在 LearnKu.com 网站上。
上一篇 下一篇
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~