前言
最近在处理大数据相关的东西,数据动辄上百万,还不能用 GPU 加速,于是开始动起了多进程的念头。众所周知,Python 的多线程是假的,不过好在开发者老大还是给我们留了一个活路,也就是进程池。这个方法的优点在于进程的并发细节完全不用我们操心,我们只需要把并发的任务仍到进程池里就好了。
直接使用进程池
1 |
|
一些说明
- 示例中使用的是
apply_async
这个代表是非阻塞的,意味着输出不保证顺序,而apply
是阻塞的,输出是按照输入顺序输出的。 pool.terminate()
代表着结束工作进程,不再处理未完成的任务pool.join()
阻塞主进程,等待子进程的推出,join
要在close
或terminate
之后使用。- 进程数大家可以按需要调整,它不是越大越好,也不是说 CPU 只有 4 个核就只能开到 4,在个人的 PC 上,开到 10 会有一个很明显的提升,在个人任务中,速度提升了至少 7 倍左右。