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
取代了旧的 asyncore
和 asynchat
模块,这些模块仍然可用但是已经被弃用。
concurrent.futures
提供了线程和基于进程的执行程序的实现,用于管理运行并发任务的资源池。
- subprocess --- 创建新进程
- signal --- 异步系统事件
- threading --- 进程内并发操作的管理
- multiprocessing --- 多进程,类似多线程
- asyncio --- 异步I/O,事件循环以及并发工具
- concurrent.futures --- 并发任务管理池
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。