现在很多CPU都支持多核,甚至是手机都已经开始支持多核了。而Python的GIL(Global Interpreter Locko)则使得其没法使用这些多核带来的优势。还好从Python2.6开始,引入了multiprocessing模块,我们终于可以使用多核带来的便利了。
本文,你会学习到下面这些内容:
- 使用多进程的优点
- 使用多进程的缺点
- 使用multiprocessing来创建多进程
- Process的子类化
- 创建进程池
本文并不是一个multiprocessing的全面的介绍,假如你想全面的了解它,可以参见官方的文档:
https://docs.python.org/2/library/multiprocessing.html
下面让我们开始吧!
使用多进程的优点
使用多进程有很多优点:
- 多进程使用独立的内存空间
- 相比于线程,代码更加直观
- 能够使用多个CPU/多核
- 避免GIL
- 子进程可以被kill(和thread不同)
- multiprocessing有和threading.Thread类似的接口
- 对CPU绑定的进程比较好(加密,二进制搜索,矩阵乘法等)
下面我们来看看使用多进程有什么缺点:
使用多进程的缺点
使用多进程也有一些缺点:
- 进程间通信更加复杂
- 内存的占用大于线程