Logo
Section 1 / 20

简介

本课程为讨论 multiprocessing 模块的各种 API 和功能奠定了基础。

导入

简介

本课程为讨论 multiprocessing 模块的各种 API 和功能奠定了基础。

简介

Python 提供了使用 multiprocessing 模块以进程方式执行任务的能力。该模块中的大多数 API 与 threading 模块中的 API 非常相似。事实上,如果你已经使用 threading 模块的 API 编写了程序,只需简单修改即可使其适用于 multiprocessing 模块。

multiprocessing 模块在一定程度上缓解了全局解释器锁(GIL)带来的限制。Python 常被批评无法在多核系统中将线程调度到多个处理器上运行。正因如此,像 Jython、IronPython 等替代实现版本应运而生,以弥补标准 Python 实现的这一不足。multiprocessing 模块通过允许程序创建独立的进程来执行任务,使这些任务可以在不同的处理器上并行运行,从而为 Python 带来了希望。这 使得 Python 既能实现并发也能实现并行,而仅使用 threading 模块时,Python 只能实现并发,无法实现并行。 而像 Java 这类设计中没有 GIL 的语言,仅靠线程就能在多核系统上同时实现并发和并行。

创建、管理和销毁进程的开销远高于线程;此外,进程间通信的速度也比线程间通信慢。这两个缺点可能使 Python 在对性能要求极高或时间敏感的应用场景中并不实用。

基于上述背景,让我们深入探讨 multiprocessing 模块及其提供的 API。

Multiprocessing2.png
Multiprocessing2.png

线程模块

进程