multiprocessing— 基于进程的并行性
多处理是一个支持使用类似于线程模块的 API 生成进程的包。多处理包提供本地和远程并发,通过使用子进程而不是线程来有效地避开全局解释器锁。因此,多处理模块允许程序员充分利用给定机器上的多个处理器。它可以在 Unix 和 Windows 上运行。
- from multiprocessing import Pool
-
- def f(x):
- return x*x
-
- if __name__ == '__main__':
- with Pool(5) as p:
- print(p.map(f, [1, 2, 3]))
output:
[1, 4, 9]
concurrent.futures.ProcessPoolExecutor 提供更高级别的接口来将任务推送到后台进程,而不会阻塞调用进程的执行。与直接使用池接口相比,concurrent.futures API 更容易将工作提交到底层进程池与等待结果分开。
在多处理中,通过创建 Process 对象然后调用其 start() 方法来生成进程。进程遵循 threading.Thread 的 API。多进程程序的一个简单示例是