python因为其全局解释器锁GIL而无法通过线程实现真正的平行计算。需要解决 IO密集型 和 计算密集型 的平行运算问题。
IO密集型:读取文件,读取网络套接字频繁。
计算密集型:大量消耗CPU的数学与逻辑运算,也就是我们这里说的平行计算。
IO密集型:解决的方法是协程, 常用的greenlet 、gevent、ayncio等来处理
简单理解 见下面连接:
10分钟快速理解python异步asyncio_小生听雨园的博客-优快云博客_asyncio python
深入一点见 下面链接
计算密集型:常用concurrent.futures模块来处理
concurrent.futures模块,可以利用multiprocessing实现真正的平行计算。
核心原理是:concurrent.futures会以子进程的形式,平行的运行多个python解释器,从而令python程序可以利用多核CPU来提升执行速度。由于子进程与主解释器相分离,所以他们的全局解释器锁也是相互独立的。每个子进程都能够完整的使用一个CPU内核。
python concurrent.futures_weixin_30394981的博客-优快云博客
Python 中 concurrent.futures 模块使用说明_团子大圆帅的博客-优快云博客_concurrent.futures